Delphi programozás - Szoftverfejlesztés fórum

üzenetek

hozzászólások


lao ce
(aktív tag)

meddig jutottal a megoldasban? hol akadtal el?


<Adamsky>
(nagyúr)

Majd átküldöm mail-be, jó?


lao ce
(aktív tag)

hat, szerintem jo lesz itt is (ha egyetertesz)... gondolom van kerdesed, mert valami nem megy... aztan hatha mas is okul belole.


tusi74
(őstag)

Na voltam a szakdolis tanárnál.
A megoldás a törlésre:
Beírod egy sima query-be, nem kell semmiféle UpdateSQL, hogy
delete from stb....

Amikor meghívod, akkor nem kell odaírni, hogy
query.Open, csak egyszerűen Query.ExecSQL. Ezt szerintem Te is így írtad még régebben, csak én folyamatosan Openeztem a query-t, aztán csodálkoztam, hogy nem megy.

Most szerencsére megy.


lao ce
(aktív tag)

hat, ezt :)


<Adamsky>
(nagyúr)

Igazából nem jutottam sokra. A lényeg valami ilyesmi lenne:

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
const szoveg = '11,10,09,08';

begin
i := 0;
repeat
Edit1.text := copy(szoveg, 1+i*3, 2);
inc(i);
until i>3;
end;

Namármost a formon van 4db Editbox, és ez az előbbi kódrész az 1-esbe szép sorba beleírja a 11, 10, 09, 08 számokat. Ez -- mondanom sem kell -- így nem jó. Az ''i'' értékétől függően kellene az egyes számokat az ''i+1''-ik Editbox-ba beírni.

Lehet az Editbox-okat tömbe szervezni? pl:
EDoboz: array [1..4] of TEdit;

[Szerkesztve]


Notes
(senior tag)

Fejből most nem tudom, de a formon lévő komponenseknek van valami azonosítójuk (szám) ami automatikusan létrejön, és az alapján lehet rájuk hivatkozni. Talán ''tag'' vagy mi... nézz szét a súgóban az jó lehet neked.


<Adamsky>
(nagyúr)

Megtaláltam, de sajna nem igazán tudom, hogyan is tudnám én ezt használni. :F
A helpben és a legtöbb példprogramban így találtam meg:
... TComponent(Sender).Tag ...


lao ce
(aktív tag)

jol indultal el. en csinalnek egy ciklust ami az osszes komponensen vegigmegy, aztan ha editboxhoz er amibe masolni kell valamit, akkor beirnam az aktualis szamot, amit viszont egy szamlalo kell mutasson...
a kulcs amit en megneznek a helpben a ComponentCount, a Components es az 'as'. ezek alapjan mar meg tudod irni a programot, alabb irom az en valtozatomat amit nem ellenoriztem szoval lehet hogy hibas valahol.

const
szoveg = '11,10,09,08';

var
szamlalo : integer;

szamlalo := 1;

// szamoljunk osszes komponenst
for i := 0 to ComponentCount-1 do begin

// vajon ez egy edit box amibe irni kell?
// persze, az edit neve Edit1...Editx, tehat csak az elso 4 karaktert kell nezni
if copy (Components.Name, 1, 4) = 'Edit' then
...//igy csinalhatsz a tipustalan komponensbol editboxot,
...//es erheted el a value prop-t:
...(Components
as TEdit).Value := copy(szoveg, szamlalo, 2);

// harmasaval egyszerubb, i-t nem lehet hasznalni mert az osszes
// komponenst megszamoljuk a formon, azokat is amik nem edit boxok
szamlalo := szamlalo + 3;

end;

ha van harom edit box-od akkor kitolti, ha felteszel egy negyediket akkor is kitolti a nelkul hogy a programban valtoztatnal.


<Adamsky>
(nagyúr)

Köszi, átrágom magam rajta...


Alan
(aktív tag)

lao ce, rég ''láttalak'' :)

Bocsáss meg, hogy belefirkálok a programodba, de szerintem kicsit szebben így nézne ki:

const
szoveg = '11,10,09,08';

var
szamlalo : integer;

szamlalo := 1;
with Form1 do
for i := 0 to ComponentCount-1 do
begin
if Components i is TEdit
then
begin
(Components i as TEdit).Text := Copy(szoveg, szamlalo, 2);
szamlalo := szamlalo + 3;
end
end;

Ebből most már csak az hiányzik, hogy kizárólag a mi kinevezett szerkesztőmezőinkbe töltsön adatot, és így más mezőket is fel lehessen tenni az ablakra.


[Szerkesztve]


lao ce
(aktív tag)

haho!!!!!!!
vegre :)
nagy projektben voltal hogy igy eltuntel?

szerk:
najo, ugy is szep ahogy irtad, en gyakorlatban a komponensek neveivel jatszok (mert azert lehessen mar edit-et hasznalni ugy is hogy nem akar kitoltodni mindenaron :) ) azert maradt bennem ez a megoldas-sema.
mindenesetre a szamlalo := szamlalo + 3 valoban az if statementen belul kell legyen es ez hiba az enyemben egyertelmuen, a tiedben jol van... ok-ok :)

[Szerkesztve]


<Adamsky>
(nagyúr)

Nagyon szépen köszönöm a válaszokat!


kacsa7
(őstag)

Hali!

Hogyan tudok delphi7-ben címkét kreálni?
Azt kéne csinálni, hogy van egy szöveg és annak minden egyes betűjét egy-egy címkébe belerakni.
Megnézem length-el a szöveg hosszát, és akkor ugye létrehozok annyi label-t és beleírom a betűket.


tusi74
(őstag)

Na újabb rejtély.

Táblát töltök combobox-okból.
Azt mondom, hogy
Query5.FieldByName('Dkod').AsInteger:=StrToInt(Combox1.Text);

vagy
Query5.FieldByName('Dkod').AsInteger := StrToInt(Combox1.Items[Combox1.Itemindex]);

A következő történik.
Megnyomom egyszer a gombot, ami beszúrná, akkor beszúrja
minden combobox 0. indexű elemét. Tök mindegy, mi van beállítva.

Megnyomom mégegyszer, akkor megcsinálja rendesen, amit én beállítottam.
Igen ám, de a rossz is bekerül a táblába.

Aztán minden megy jól, akármit átállítok, megy. Csak a program indulása után az első beszúrás csinálja.

Hát erre kíváncsi vagyok.



lao ce
(aktív tag)

-tusi, ha break point-ot raksz ezekre a sorokra, akkor a Combox1.Text -nek es az itemindexnek mi az erteke a sor vegrehajtasa elott?
-tegyel le egy gombot a formra es messagedlg-vel irasd ki az erteket a combo1.textnek. mielott beszursz irasd ki az erteket. jo vagy rossz?
-tegyel breakpointot a gombod programjanak eslo sorara ami a beszurast csinalja es kovesd vegig (f7 vagy f8), nem hivodik-e meg az insert ketszer veletlenul

a break pointot irtam mar neked, mikor ez a problemat eloszor emltetted. azt javaslom probald megtanulni hasznalni, mert e nelkul keptelenseg debuggolni hatekonyan. olyan nincs hogy ketszer ketfele ertekkel hajtodik vegre valami ugy hogy semmi sem valtoztatja meg az ertekeket kozben, szoval valami ossze van kuszalva nalad. ezt a fajta problemat csak ugy 'fejben', bamulva a sorokat nincs sok ertelme megprobalni megtalalni.


[Szerkesztve]


tusi74
(őstag)

Megoldottam, 2 query-t egybeírtam és megy. HOgy pontosan mi volt
a baj, azt nem tudom, az a lényeg, hogy most jó.


Hani
(aktív tag)

Helló!
Hülye kérdés, és ha volna Delphim, meg is nézném, de nincs, és biztosra akarok menni.
Tehát:
Beszól-e vajon, ha nem azt írom, hogy
If (valami=123) AND (valami2=456) Then...
Hanem
If ((valami=123) AND (valami2=456)) Then...

Azt hiszem, nem, de kérlek, erősítsetek meg!

Szintén help megnézés nélkül: ugye figyelembe veszi a zárójeleket, ha így van pl:
If ((valami=12) AND ((valami2=34) OR (valami2=56))) Then...

Biztassatok, vagy cáfoljatok, pls.


[Szerkesztve]


lao ce
(aktív tag)

nem szol be, plusz ('felesleges') zarojeleket kiloszamra lehet irni ha segit a megertesben, olvashatosagban.
masodik peldadhoz igen, figyelembe veszi.


kacsa7
(őstag)

Na valaki létszi segítsen. Hogyan lehet program közben valamilyen elemet létrehozni.
Van valami create parancs, de a használatával nem vagyok tisztában.

üzenetek