Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Zur Laufzeit erstellte Buttons - OnClick weigert sich (https://www.delphipraxis.net/161444-zur-laufzeit-erstellte-buttons-onclick-weigert-sich.html)

tkoenig 4. Jul 2011 11:14

AW: Zur Laufzeit erstellte Buttons - OnClick weigert sich
 
Ja, dass die Buttons jetzt nicht mehr zum Grid gehören, ist mir auch aufgefallen.. Gibt es dafür einen einfachen Workaround?

SirThornberry 4. Jul 2011 12:06

AW: Zur Laufzeit erstellte Buttons - OnClick weigert sich
 
Ich würde das ganze wieder aufs Grid packen und versuchen heraus zu finden wo das Click verschwindet. Denn zum Beispiel MouseDown und MouseUp funktionieren beim Button weiterhin auch wenn der Parent des Buttons ein StringGrid ist (notfalls kann man sich sein eigenes Klick basteln was auf Grundlage von MouseDown und MouseUp arbeitet)

EWeiss 4. Jul 2011 18:00

AW: Zur Laufzeit erstellte Buttons - OnClick weigert sich
 
Ich würde die Winmessagen umleiten also das grid subclassen.

gruss

blackfin 4. Jul 2011 19:36

AW: Zur Laufzeit erstellte Buttons - OnClick weigert sich
 
Zitat:

Ich würde die Winmessagen umleiten also das grid subclassen.
Der Satz hat gute Chancen, Aussage des Jahres zu werden :lol::stupid:

EWeiss 4. Jul 2011 21:36

AW: Zur Laufzeit erstellte Buttons - OnClick weigert sich
 
Zitat:

Zitat von blackfin (Beitrag 1109941)
Zitat:

Ich würde die Winmessagen umleiten also das grid subclassen.
Der Satz hat gute Chancen, Aussage des Jahres zu werden :lol::stupid:

Wie meinst das ?
War ernst gemeint.

Aber davon ab verstehe ich nicht warum man hier ein ClickAction benötigt die Button müßten weiterhin auf das clicken reagieren können auch ohne
extra event.

gruss

blackfin 4. Jul 2011 22:02

AW: Zur Laufzeit erstellte Buttons - OnClick weigert sich
 
Zitat:

Wie meinst das ?
War ernst gemeint.
Deine Aussage war ja auch richtig!
Ich musste nur schmunzeln, als ich realisiert habe, was für ein Fachbegiff-Denglisch der Satz ist :-)
Nix für ungut :stupid:

Ja ich bin doof

EWeiss 4. Jul 2011 22:13

AW: Zur Laufzeit erstellte Buttons - OnClick weigert sich
 
Zitat:

Zitat von blackfin (Beitrag 1109964)
Zitat:

Wie meinst das ?
War ernst gemeint.
Deine Aussage war ja auch richtig!
Ich musste nur schmunzeln, als ich realisiert habe, was für ein Fachbegiff-Denglisch der Satz ist :-)
Nix für ungut :stupid:

Ja ich bin doof

Ach jo sorry mein denglish ist nicht das beste ;) hehehehe (ne 6 dafür ist gar nicht's aber 7 gibts ja leider nicht!)
Ich lerns nimmer.

Ja ich bin doof
Denke nicht..


gruss

himitsu 4. Jul 2011 22:39

AW: Zur Laufzeit erstellte Buttons - OnClick weigert sich
 
Zitat:

Zitat von tkoenig (Beitrag 1109844)
Delphi-Quellcode:
SetLength(Buttons,high(Captions)+1);
for i := 0 to high(Buttons) do
  SetLength(Buttons[i],StringGrid.RowCount-StringGrid.FixedRows);
Delphi-Quellcode:
Buttons[i,j].Name := 'TBGButton_'+inttostr(i)+'_'+inttostr(j);
Buttons[i,j].Tag := strtoint(inttostr(i) + inttostr(j));


Damals reichte es, wenn die Noten nur bis Fünf gingen, aber heutzutage braucht man schon die 6. :stupid:

Wo hier nun schon Viele beim Problem mit dem OnClick helfen...

Da du deine Buttons sowieso in einem Array verwaltest und vermutlich kein FindComponent verwendest, kannst'e auf den Komonentennamen verzichten.
> die VCL braucht den Namenm um die gleichnamige Form-Variable mit der Komponente in der DFM zu verknüpfen und um eventuell die Komponenten untereinander zu verknüpfen (wie z.B. Eine ImageList irgendwo zuweisen).
> und man braucht den Namen, wenn man darüber eine Komponete suchen will, wie z.B. über FindComponent (was aber auch oftmals anders/besser/schneller geht)

Der Tag wird bestimmt falsch berechnet, denn
Delphi-Quellcode:
[1, 3] = 4
und
Delphi-Quellcode:
[3, 1] = 4
.

Und da das Array sowieso quadratisch wird, kann man alle ebenen auch gleichzeitig setzen.
Delphi-Quellcode:
SetLength(Buttons, Length(Captions), StringGrid.RowCount-StringGrid.FixedRows);
for i := 0 to high(Buttons) do

schlecki 5. Jul 2011 08:28

AW: Zur Laufzeit erstellte Buttons - OnClick weigert sich
 
Zitat:

Zitat von himitsu (Beitrag 1109971)
Der Tag wird bestimmt falsch berechnet, denn
Delphi-Quellcode:
[1, 3] = 4
und
Delphi-Quellcode:
[3, 1] = 4
.

wenn du dich da mal nicht vertan hast:

Zitat:

Delphi-Quellcode:
...Tag = strtoint(inttostr(i) + inttostr(j));

sollte also

Delphi-Quellcode:
[1, 3] = 13
und
Delphi-Quellcode:
[3, 1] = 31
liefern. Problematisch wird es trotzdem bei
Delphi-Quellcode:
[11, 1] = 111 = [1, 11]
:)

ibp 5. Jul 2011 09:41

AW: Zur Laufzeit erstellte Buttons - OnClick weigert sich
 
Zitat:

Zitat von schlecki (Beitrag 1109993)
Zitat:

Zitat von himitsu (Beitrag 1109971)
Der Tag wird bestimmt falsch berechnet, denn
Delphi-Quellcode:
[1, 3] = 4
und
Delphi-Quellcode:
[3, 1] = 4
.

wenn du dich da mal nicht vertan hast:

Zitat:

Delphi-Quellcode:
...Tag = strtoint(inttostr(i) + inttostr(j));

sollte also

Delphi-Quellcode:
[1, 3] = 13
und
Delphi-Quellcode:
[3, 1] = 31
liefern. Problematisch wird es trotzdem bei
Delphi-Quellcode:
[11, 1] = 111 = [1, 11]
:)


das Problem könnte man mit einer durchgehenden Nummerierung umgehen und hätte dann auch nicht die doppelten Konvertierungen...

Delphi-Quellcode:
...Tag:=1+j*(high(Buttons)+1)+i


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:03 Uhr.
Seite 2 von 3     12 3      

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