01. februar 2000 - 17:14Der er
6 kommentarer og 2 løsninger
"smart" procedure til udfyld og synlige editbokse
Jeg har to rækker editbokse af 16 stk Dem til venstre hedder edtLeft 1 - 16 Dem til højre hedder edtRight 1 - 16
Jeg har en input værdi - lad os bare kalde 1 eller 2
Hvis værdien er 1 skal kun hver anden i hver række være synlig, statende med en synlig i venstre side
Hvis værdien er 2 skal kun hver anden i hver række være synlig, statende med en synlig i højre side side
Bagefter skal jeg så have noget puttet i de synlige bokse. Lad os antage, vi sætter en counter til at tælle til 8, tallet skal så skiftevis puttes i venstre, og højre boks.
1 2 3 4
osv.
Jeg har spekuleret lidt over den, og det må være noget med componencount - i begge tilfælde, men jeg er ikke helt stiv i det.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Hvis du glemmer de editbokse du kan komme på din skærm som drop-komponent, så lav et array[1..32] af TEdit og brug det i stedet. Så kan du arbejde med dine editbokse som om det var en alm. variabel, og for at holde styr på rækkerne og fordelingen antager du at alle ulige er venstre og alle lige er højre:
i Formcreate skaber du dem alle:
for i := 1 to 32 do editfelt[i] := TEdit.create(self) eller (Form) eller hvad du vil.
(Husk at free dem igen i formdestroy !) herefter sætter du alle top/left med en beregning samt parent (vigtigt for at du kan se dem når de er visible):
Sttop := 8; Stleft := 16;
for i := 1 to 32 do begin editfelt[i].top := sttop + ((i-1) * 23); // 23 er højden af her editfelt editfelt[i].left := stleft + (i-1 mod 2) * (startpos for feltern i i højre side); // editfelt[i]. visible := false; editfelt[i].parent := form1; // eller panel1 eller hvad der nu er forældre
Herefter er der bare at ræse dette array igennem og sætte hhv. visible til true/false afhængig af om de skal vises eller er og sætte teksten der skal vises:
Tak for hjælpen Sjensen - det har dog ikke løst det hele, men jeg har fundet ud af at min database ikke var særlig smart opbygget, så med laver jeg den om slipper jeg for alt for meget bøvl.
Du skal selfølgelig have point for dit besvær - selvom det ikke løste det hele hjalp det mig pænt på vej, jeg håber det er OK
Der en en funktion der hedder FindComponent (på TForm), den kan vist bruges til det du vil: (funktionen er ligeglad med store/små bokstaver) (den regner med at der finde edit felter fra Edit1-Edit10)
Var E:TEdit; i:integer; begin For i:=1 to 10 do begin e:=FindComponent('edit1') as TEdit; If e=nil then continue; //Dette vil ikke ske hvis du har 10 TEdit felter som hedder Edit1 - edit10. e.Text:='hvad der nu skal i' end; end;
Du kan evt ligge Edit felterne ind i et array som sjensen bruger (her behøre du bare ikke oprette og nedlægge dem selv)
Jeg har prøvet noget af Sjensen eksempel (Så jeg husker det til den dag jeg skal bruge det), men jeg kan ikke få det til at spille, med at oprette Edit felterne i et array - jeg får en fejl på linjen
editfelt[i] := TEdit.create(self)
Er der en af jer der gider at ligge et eksempel - med "fuld" kode altså variable osv.
koonz>> brug Sjensen's eksempel, men tilføj Editfelt: Array[0..100] of Tedit; under Public Procedures.. altså :
USES Windows, Forms, osv.
Tform1= class(Tform) ... Private Procedures .. Public Procedures Editfelt: Array[0..100] of Tedit; end;
og så insæt koden fra Sjensen, så skulle den være der. Note: Der er gjort plads til 100 editbokse i hukommelsen hvis du anvender [0..100] hvis du synes dette er for meget/lidt kan du bare ændre det der.
Tak DJ, jeg fandt selv ud af den manglede, men jeg er nok ikke helt hjemme i at bruge "system" variable, man skal lige for et øjeblik glemme den gamle pascal ;)
Igen - tak for hjælpen
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.