![]() |
verschiedene groubindex-eigenschaften automatisch einstellen
hallo
ich will nen programm programmieren, wo es unheimlich viele speedbuttons gibt. nun hab ich das problem das ich für jeden button einen zu den anderen verschiedenen groupindex einstellen muss(das soll so ne art minesweeper werden). da das bei 30 oder mehr buttons nervig ist wollt ich beim formcreate-ereignis für jeden groupindex mit nem zufallsgenerator einstellen und mit ner repeat schleife prüfen ob vielleicht 2 groupindexe gleich sind. das ist aber ein hammerteil programmcode geworden. geht das irgendwie einfacher? :wall: |
Re: verschiedene groubindex-eigenschaften automatisch einste
Hi,
äh mal eine ganz dumme Frage, warum zählst du nicht von 1 immer rauf? SpeedButton1.GroupIndex = 1, SpeedButton2.GroupIndex = 2,... Gruß Der Unwissende |
Re: verschiedene groubindex-eigenschaften automatisch einste
Zitat:
|
Re: verschiedene groubindex-eigenschaften automatisch einste
Nimm BitBtn's die brauchen keinen Groupindex.
Delphi-Quellcode:
implementation
{$R *.dfm} uses Buttons; procedure TForm1.FormCreate(Sender: TObject); const SPALTEN = 15; ZEILEN = 15; var Button : TBitBtn; x,y : integer; begin for x := 0 to SPALTEN - 1 do begin for y := 0 to ZEILEN - 1 do begin Button := TBitBtn.Create(self); Button.Parent := Scrollbox1; Button.Caption := 'X'; Button.Width := 32; Button.Height := 32; Button.Top := Y * 32; Button.Left := X * 32; Button.OnClick := ButtonClick; Button.Name := 'Button' + intToStr(x) + '_' + inttostr(Y); end; end; end; procedure TForm1.ButtonClick(Sender : TObject); begin // do something... end; |
Re: verschiedene groubindex-eigenschaften automatisch einste
Zitat:
Zitat:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var Button : TSpeedButton; i : Integer; begin for i := 0 to AnzahlDerSpeedButton - 1 do begin Button := TSpeedButton.Create; Button.GroupIndex := i; .... end; end; |
Re: verschiedene groubindex-eigenschaften automatisch einste
Zitat:
|
Re: verschiedene groubindex-eigenschaften automatisch einste
dann kuck doch mal in der hilfe von delphi.
falls du eine neuere version hast, kannst du auch mal mit der maus zwischen die klammern von TSpeedButton.Create(hier) gehen. dann blendet dir delphi via tooltip ein, was für einen parameter es haben möchte. meistens ist das der sogenannte Parent. in deinem fall kannst du hier wahrscheinlich "Self" oder "Form1" eintragen. |
Re: verschiedene groubindex-eigenschaften automatisch einste
Ja, du solltest natürlich dann auch noch die Position der Buttons anpassen, die Größe, ... (alles was du setzen möchtest) und dann müsstest du die wohl auch noch auf das Formular einfügen (guck mal unter den Methoden von TForm oder so, da gibt es etwas wie InsertControl).
|
Re: verschiedene groubindex-eigenschaften automatisch einste
Zitat:
|
Re: verschiedene groubindex-eigenschaften automatisch einste
Zitat:
|
Re: verschiedene groubindex-eigenschaften automatisch einste
Sorry, aber von welchem Code genau sprichst du denn gerade? :wink:
|
Re: verschiedene groubindex-eigenschaften automatisch einste
was spricht bittesehr dagegen, bei allen den groupindex auf 0 zu lassen?
(merke: groupindex = 0 ^= nicht zu einer group gehörend) Ansonsten mal ein kleines beispiel, wie man ein 2d-Feld aus SpeedButtons zur laufzeit generiert:
Delphi-Quellcode:
Ungetestet. Aber ich glaub fast, das muss jetzt in die CodeLib.
type TButtons = array of TSpeedButton;
type TMetrics = record Top,Left,Width,Height:integer; end; procedure MakeButtons(Count: Integer; Owner: TControl; Metrics: TMetrics; numCols: Integer; out Buttons: TButtons); var Col,Row: Integer; begin setlength(Buttons,Count); col := 0; row := 0; for i := 0 to Count -1 do begin Buttons[i] := TSpeedButton.Create(Owner); Buttons[i].Top := row * Metrics.Height + Metrics.Top; Buttons[i].Left := col * Metrics.Width + Metrics.Left; Buttons[i].Width := Metrics.Width; Buttons[i].Height := Metrics.Height; //Für dieses Mal: Eindeutigen GroupIndex vergeben Buttons[i].GroupIndex := i; // Positionen überprüfen Col := Col + 1; if Col > numCols then begin Col := 0; Row := Row + 1; end; end; end; |
Re: verschiedene groubindex-eigenschaften automatisch einste
[quote="DGL-luke"]was spricht bittesehr dagegen, bei allen den groupindex auf 0 zu lassen?
(merke: groupindex = 0 ^= nicht zu einer group gehörend) [/delphi] Dagegen spricht die Eigenschaft down. Wie gesagt ich weiß nicht genau was für ein Spiel das wird, aber wenn jmd. SpeedButtons nimmt, dann spricht einiges dafür, dass man einige gedrückt lässt und andere nicht. Alle Speedbuttons mit gleichem Groupindex gehören zu einer Gruppe (wär hätte das gedacht) und in jeder Gruppe ist immer max. ein Button Down. Also führt nichts an eigene einzigartige GroupIndizes vorbei Gruß Der Unwissende |
Re: verschiedene groubindex-eigenschaften automatisch einste
*ausprobieren muss*
tatsächlich... na das ja mal n designfehler der übelsten Sorte. was solls, hoffe mein code funktioniert. |
Re: verschiedene groubindex-eigenschaften automatisch einste
:gruebel:
Warum nicht ganz einfach so:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i: integer; begin for i := 0 to Pred(ComponentCount) do begin if (Components[i] is TSpeedButton) then begin (Components[i] as TSpeedButton).GroupIndex := i + 1; end; end; end; |
Re: verschiedene groubindex-eigenschaften automatisch einste
Zitat:
Delphi-Quellcode:
schon ausreichen würde :wink:
procedure TForm1.FormCreate(Sender: TObject);
var i: integer; begin for i := 0 to Pred(ControlCount) do begin if (Controls[i] is TSpeedButton) then begin (Controls[i] as TSpeedButton).GroupIndex := i + 1; end; end; end; Aber wenn es ein Spiel wird, dass eine Art Minesweeper ist, hm, 100+ Buttons per Hand setzen? Viel Spaß. |
Re: verschiedene groubindex-eigenschaften automatisch einste
Hai Unwissender,
was möchtest Du uns mit deinem Posting denn sagen? P.S.: ICH würde die Buttons sicher auch zur Laufzeit erzeugen. Aber die Frage war ja wie man den Grouindex der Buttons setzt ;-) |
Re: verschiedene groubindex-eigenschaften automatisch einste
Ich wollte nur sagen, dass Controls es auch tun, du hast Components verwendet. :wink:
Und du hast recht, bin ich wohl etwas OT mit meinen anderen Antworten. |
Re: verschiedene groubindex-eigenschaften automatisch einste
Zitat:
|
Re: verschiedene groubindex-eigenschaften automatisch einste
Zitat:
(tut mir leid. war irgendwie nen fehler so das er mir zuerst meinen beitrag nicht angezeigt hat und ich dachte ich hätte ihn nicht abgeschickt). :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz