01. juni 2005 - 15:05Der er
9 kommentarer og 1 løsning
Randomize 5 ComboBoxe
Hvordan kan jeg gøre dette (med så lidt kode som muligt): Randomize den valgte item i hver af 5 comboboxe. Alle comboxene indeholder de samme 8 items og ingen af boxene må have den samme valgte item som nogen af de andre.
Jge behøver ikke selve koden blot et forslag til hvordan dette kan gøres på en let måde :)
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
procedure GoRando(Boxe: Array of TComboBox); var Used,i,x : integer; begin Randomize; Used:=$FFFF; for i:=0 to 4 do begin repeat x:=random(8)+1; until (Used and (x shl x)) =(x shl x); Boxe[i].ItemIndex:=x-1; Used:=Used-(x shl x); end; end;
---------- Hvis f.eks. dine boxe hedder ComboBox1, ComboBox2 osv. kaldes den sådan:
Okay mange tak Kroning :) Det virker perfekt. Du får selvfølgeligt pointene hvis du blot lægger et svar. Men har lige et spørgsmål til nu vi er ved emnet: Hvordan kan jeg (når man vælger en item i en combobox) tjekke om denne item er valgt i en af de andre 5 boxe. Og hvis den er så skal den automatisk vælge item'en under den valgte medmindre den selvfølgeligt også er valgt i en af de andre. Håber du forstår og gider hjælpe :)
Har også et andet problem med din kode kroning: Hver ENESTE gang der bliver randomized bliver item 1, 3 og 8 valgt. Alle de andre er vist ret tilfældige med ikke lige de 3 :S
Ang. 1,3 og 8 så er der en fejl i proceduren men den er nu heller ikke særlig god, denne er bedre da der ikke er en teoretisk meget lang repeat until lykke i den:
procedure GoRando(Boxe: Array of TComboBox); var i,c,x : integer; Used : array[0..7] of byte; begin Randomize; for i:=0 to 7 do Used[i]:=i; c:=8; for i:=0 to 4 do begin x:=random(c); Boxe[i].ItemIndex:=Used[x]; Used[x]:=Used[c-1]; dec(c); end; end;
Hmm har en anden ide så: Når man trykker på en knap skal denne tjekke om 2 eller flere comboboxe (ud af mine 5 boxe) har den samme item valgt og hvis de har udføre noget kode.
function FlereEns(Boxe: Array of TComboBox) : boolean; var i,x : integer; begin Result:=true; for i:=0 to 3 do for x:=i+1 to 4 do if Boxe[i].ItemIndex=Boxe[x].ItemIndex then exit; Result:=false; end;
----- if FlereEns([ComboBox1,ComboBox2,ComboBox3,ComboBox4,ComboBox5]) then showmessage('jep der foretaget samme valg');
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.