AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SpeedButton down funktioniert nicht richtig

Ein Thema von Reyam · begonnen am 21. Jun 2007 · letzter Beitrag vom 21. Jun 2007
Antwort Antwort
Reyam

Registriert seit: 15. Jun 2007
12 Beiträge
 
Delphi 7 Personal
 
#1

SpeedButton down funktioniert nicht richtig

  Alt 21. Jun 2007, 15:06
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:
...
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 habe schon längere Zeit ausprobiert, aber ich finde den Fehler nicht.
Ich hoffe, ihr könnt mir helfen

Mfg
Florian Mayer
Angehängte Dateien
Dateityp: exe speedbuttontest_934.exe (381,0 KB, 23x aufgerufen)
Florian Mayer
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#2

Re: SpeedButton down funktioniert nicht richtig

  Alt 21. Jun 2007, 15:12
Da gab's doch so ne Eigenschaft AllowAllUp oder so, ist die per Default vllt. auf false?
  Mit Zitat antworten Zitat
Reyam

Registriert seit: 15. Jun 2007
12 Beiträge
 
Delphi 7 Personal
 
#3

Re: SpeedButton down funktioniert nicht richtig

  Alt 21. Jun 2007, 15:21
Das habe ich auch schon ausprobiert, hat aber nicht wirklich geklappt
Florian Mayer
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: SpeedButton down funktioniert nicht richtig

  Alt 21. Jun 2007, 15:23
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.
  Mit Zitat antworten Zitat
Reyam

Registriert seit: 15. Jun 2007
12 Beiträge
 
Delphi 7 Personal
 
#5

Re: SpeedButton down funktioniert nicht richtig

  Alt 21. Jun 2007, 15:29
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)
Florian Mayer
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#6

Re: SpeedButton down funktioniert nicht richtig

  Alt 21. Jun 2007, 15:43
Wenn die Buttons unabhängig voneinander arbeiten sollen, ja.
  Mit Zitat antworten Zitat
Reyam

Registriert seit: 15. Jun 2007
12 Beiträge
 
Delphi 7 Personal
 
#7

Re: SpeedButton down funktioniert nicht richtig

  Alt 21. Jun 2007, 16:06
Aber wenn ich nun direkt nach der Erstellung der SpeedButtons den GroupIndex mit

Nummern[i,j].GroupIndex := i*j; auf jeden Button zuweise und dann immer nur 'Down' ändere, dann funktioniert das auch noch nicht!
Selbst wenn ich den GroupIndex wieder auf 0 und bei einem neuen Klick wieder die zahl zuweise, klappt das auch noch nicht
Florian Mayer
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#8

Re: SpeedButton down funktioniert nicht richtig

  Alt 21. Jun 2007, 16:30
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
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
Reyam

Registriert seit: 15. Jun 2007
12 Beiträge
 
Delphi 7 Personal
 
#9

Re: SpeedButton down funktioniert nicht richtig

  Alt 21. Jun 2007, 16:38
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
Florian Mayer
  Mit Zitat antworten Zitat
Reyam

Registriert seit: 15. Jun 2007
12 Beiträge
 
Delphi 7 Personal
 
#10

Re: SpeedButton down funktioniert nicht richtig

  Alt 21. Jun 2007, 17:23
Zitat von thkerkmann:
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.
Wie genau soll ich das machen? So richtig verstehe ich das noch nicht.
Florian Mayer
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:43 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