SpeedButton down funktioniert nicht richtig
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo
Ich habe ein Feld von 8 mal 8 SpeedButtons zur Laufzeit erstellt, und möchte nun, nachdem man drei Buttons gedrückt hat, dass alle wieder ungedrückt sind. Ich versuche es mit Groupindex und 'Down'. Bei jedem Klick wird der Groupindex auf 1, 2 oder 3 gesetzt und 'Down' auf true. Nachdem 3 Buttons gedrückt wurden, wird der GroupIndex auf 0 gesetzt und Down := false. Nur leider funktioniert das nicht richtig, wie man in der .exe-Datei ausprobieren kann. :( Hier der Quellcode:
Delphi-Quellcode:
Ich habe schon längere Zeit ausprobiert, aber ich finde den Fehler nicht.
...
var Form1: TForm1; nummern: Array[1..8,1..8] of TSpeedButton; drei : integer; gedrueckt: Array[1..3] of TPoint; implementation {$R *.dfm} procedure TForm1.FormShow(Sender: TObject); var i,j,x,y: integer; begin drei := 1; x := 20; y := 20; for i := 1 to 8 do begin for j := 1 to 8 do begin Nummern[i,j] := TSpeedButton.Create(Self); Nummern[i,j].Parent := GroupBox1; Nummern[i,j].Show; Nummern[i,j].Left := y; Nummern[i,j].Top := x; Nummern[i,j].Height := 50; Nummern[i,j].Width := 50; Nummern[i,j].OnClick := ZahlClick; Nummern[i,j].Tag := i*10+j; inc(x,50); end; x := 20; inc(y,50); end; end; procedure TForm1.ZahlClick(Sender: TObject); var x,y, i, j: integer; begin If Sender is TSpeedButton then begin If drei in [1,2,3] then begin x := StrToInt(Copy(IntToStr(TSpeedButton(Sender).Tag),1,1)); y := TSpeedButton(Sender).Tag Mod 10; If not Nummern[x,y].Down then begin Nummern[x,y].GroupIndex := drei; Nummern[x,y].Down := true; gedrueckt[drei].X := x; gedrueckt[drei].Y := y; inc(drei); end; If drei = 4 then begin for i := 1 to 3 do begin Nummern[gedrueckt[i].X,gedrueckt[i].Y].Down := false; Gedrueckt[i].X := 0; Gedrueckt[i].Y := 0; end; drei := 1; end; end; end; end; Ich hoffe, ihr könnt mir helfen Mfg Florian Mayer |
Re: SpeedButton down funktioniert nicht richtig
Da gab's doch so ne Eigenschaft AllowAllUp oder so, ist die per Default vllt. auf false?
|
Re: SpeedButton down funktioniert nicht richtig
Das habe ich auch schon ausprobiert, hat aber nicht wirklich geklappt
|
Re: SpeedButton down funktioniert nicht richtig
Du musst der Eigenschaft GroupIndex einen grösseren Wert geben als 0.
Hast du mehrere Buttons mit gleichem Groupindex, so wird hierüber gesteuert, dass immer nur ein Button aus der Gruppe gedrückt sein kann. |
Re: SpeedButton down funktioniert nicht richtig
das heißt: ich soll jedem Button einen Eigenen GroupIndex geben?
also jedem eine eigene Zahl (button1 eine 1 und Button 64 die Zahl 64) |
Re: SpeedButton down funktioniert nicht richtig
Wenn die Buttons unabhängig voneinander arbeiten sollen, ja.
|
Re: SpeedButton down funktioniert nicht richtig
Aber wenn ich nun direkt nach der Erstellung der SpeedButtons den GroupIndex mit
Delphi-Quellcode:
auf jeden Button zuweise und dann immer nur 'Down' ändere, dann funktioniert das auch noch nicht!
Nummern[i,j].GroupIndex := i*j;
Selbst wenn ich den GroupIndex wieder auf 0 und bei einem neuen Klick wieder die zahl zuweise, klappt das auch noch nicht :( |
Re: SpeedButton down funktioniert nicht richtig
Hi,
willst Du beim Drücken auf den 4ten Button die anderen wieder ungedrückt haben, oder direkt beim dritten ? Der Groupindex ist dafür nicht geeignet das zu realisieren. Du musst das in deiner Liste der gedrückten Buttons verwalten. Das ist viel einfacher. Gruss |
Re: SpeedButton down funktioniert nicht richtig
Also ich wollte eigendlich, dass man nach dem dritten SpeedButton nichts mehr drücken kann, um dann mit einem normalen Button alles wieder ungedrückt zu machen
|
Re: SpeedButton down funktioniert nicht richtig
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz