AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
Hej arnold prøv den her og se om ikke det er det du vil :
Function CompareInt(a,b : Integer) : Integer;assembler; { The return value is -1 if a is less than b, 0 if a equals b 1 if a is greater than b. } asm xor ecx, ecx cmp eax, edx je @CompareIntDONE jg @GreaterThan mov ecx, -1 jmp @CompareIntDONE @GreaterThan: mov ecx, 1 @CompareIntDONE: mov eax, ecx end;
function LabelSortProc(Item1, Item2: TLabel): Integer; begin Result := CompareInt(Item1.Top, Item2.Top); end;
function EditSortProc(Item1, Item2: TEdit): Integer; begin Result := StrComp(pointer(Item1.Text), pointer(Item2.Text)); end;
var ColorArray : array[0..16] of TColor = (clMaroon, clGreen, clOlive, clNavy, clPurple, clTeal, clGray, clSilver, clRed, clLime, clYellow, clBlue, clFuchsia, clAqua, clLtGray, clDkGray, clWhite); procedure TForm1.Button2Click(Sender: TObject); var i,j,k : Integer; aComp : Tcomponent; found : Boolean; begin LabelListe := TList.Create; EditListe := TList.Create; //Opret nogle lister til at inde holde vores komponenter. for i:= 0 to Componentcount-1 do begin aComp := Components[i]; (* Placer relevante komponenter i vores lister *) if aComp is TLabel then LabelListe.Add(aComp) else if aComp is TEdit then EditListe.Add(aComp); end; LabelListe.Sort(@LabelSortProc); EditListe.Sort(@EditSortProc); i:=0; j:=0; while (i<pred(EditListe.Count)) do begin found := TEdit(EditListe[i]).Text = TEdit(EditListe[i+1]).Text; if found then begin TEdit(EditListe[i]).Font.Color := ColorArray[j]; TEdit(EditListe[i+1]).Font.Color := ColorArray[j]; inc(j); //Nu har vi fået mærket edit felterne op parvist så skal vi bare finde de tilhørende labels. k:=0; while (k<LabelListe.Count) do begin if Tlabel(LabelListe[k]).Top = TEdit(EditListe[i]).Top then Tlabel(LabelListe[k]).Font.Color := ColorArray[j]; if Tlabel(LabelListe[k+1]).Top = TEdit(EditListe[i+1]).Top then Tlabel(LabelListe[k+1]).Font.Color := ColorArray[j+1]; inc(k,2); end; end;
Hej Jens B Dit program ser meget fint ud. Men det finder ikke nogle af mine labels Kan det være fordi at mine labels hedder FLabel eller fordi at mine Flabel og Fedit er oprettet på en scrollbox? Anold
Hej Hvad mener du med \'2 edit felter der er ens\'? Jeg forstod det umiddelbart som at du ville have at vide, hvilke 2 edit felter der var indtastet samme værdi i, men det kan jeg ikke rigtigt få til at stemme overens med dit eksempel. Og hvordan ville du sikre dig, at brugeren ikke for eksempel indtastede ettaller i alle felterne. Kan du ikke specificere dit spørgsmål lidt nærmere? Peter
Prøv lige at sætte en ListBox på din form, bare lige for at teste det her :
procedure TForm1.Button2Click(Sender: TObject); var i,k : Integer; aComp : TComponent; begin LabelListe := TList.Create; EditListe := TList.Create; //Opret nogle lister til at inde holde vores komponenter.
for i:= 0 to ScrollBox1.Componentcount-1 do begin aComp := ScrollBox1.Components[i]; //Placer relevante komponenter i vores lister if aComp is TLabel then LabelListe.Add(aComp) else if aComp is TEdit then EditListe.Add(aComp); end;
while i <EditListe.Count do begin if i mod 2 = 0 then ListBox1.Items.Add(\'Kamp nummer \'+ TEdit(EditListe.Items[i]).Text); k:=0; while k<LabelListe.Count do begin if (TEdit(EditListe.Items[i]).Top = TLabel(LabelListe.Items[k]).Top) then ListBox1.Items.Add(\' \' + TLabel(LabelListe.Items[k]).Caption); inc(k); end; inc(i); end;
LabelListe.Free; EditListe.Free; end;
så kan vi lave udsktift bag efter ... Når jeg ved det her virker ...
borrisholt> hvis den også kan fodre HEST\'en så vil jeg da gerne købe den :-)
anold> \"Den rigtige måde\" (i min bog) er at lave nogle strukture inde i maven af dit program (evt. i forbindelse med Class\'es) som indeholder de oplysninger du vil behandle. Du bør ikke tage udgangs punkt i hvilke labels/og eller listboxe du har på skærmen: <SNIP> TSpiller = Class FNavn : String; // F.eks. Anne Jensen end;
TKamp = Class FNr : Integer; // Kamp Nr 1 FSpiller1 : TSpiller; // F.eks: \"peger\" på TSpiller (Anne Jensen) FSpiller2 : TSpiller; // F.eks: \"peger\" på TSpiller (Lene Hansen) end </SNIP>
Ovenstående kunne nu godt (på det \"stadie\") være records, men det vil være naturligt at at bruge Class da du så kan tilføje methoder i det omfang de vil være ønskeligt. Evt. kunne du lave endnu en class (\"TKampe\" eller lign.) som kunne indeholde en TList/TStringList med alle dine kampe. TKampe kunne så have methodeR der opbygger din udskrift/dit skærmbillede på baggrund af de data der ligger i dine \"strukture\"
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.