![]() |
Re: Button OnClick wird nicht ausgelöst..
@mkinzler: ui des mit dem Parent geht.. aber sie sind dann nimmer auf dem Grid und scrollen au nimmer mit...
@SirThornberry: Dein Vorschlag funktioniert nicht, es bleibt wie es ist. |
Re: Button OnClick wird nicht ausgelöst..
Irgendwo muss das OnClick ja ankommen ;)
Wenns im TStringGrid.onclick ankommt: Weiterleiten, vielleicht kommt auch OnMouseUp an (hat der button das? falls nicht, Windowproc überschreiben) |
Re: Button OnClick wird nicht ausgelöst..
Zitat:
[OT]Meint ihr das mit dem Button im Grid wär was für die Codelib?[/OT] |
Re: Button OnClick wird nicht ausgelöst..
für die Codelib? Ich finde eher nicht da es doch recht unelegant ist in jedem Draw einen Button neu zu erstellen. Desweiteren gibt es bei dieser Variante doch unschöne Effekte beim Scrollen.
|
Re: Button OnClick wird nicht ausgelöst..
japp.. diese Effekte muss ich noch beheben.. aber dafür brauch ich irgendwie die Position und die Größe einer Zelle...
|
Re: Button OnClick wird nicht ausgelöst..
Lass doch einfach den TButton weg und zeichne ihn selber. Dann berechnest Du im StringGrid.Click die Zelle (MouseToCell oder so).
Das selberzeichnen ist auch fett schneller, einziges Problem ist evtl. das Highlighting bei aktivierten Themes. da musst Du im MouseMove die verlassene und betretene Zelle ausrechnen und diese beiden neuzeichnen. |
Re: Button OnClick wird nicht ausgelöst..
Ist zwar schon älter, der Thread, aber ich hab gerade die Lösung gefunden: Die Stringgrid reicht die WM_COMMAND Nachricht nicht an ihre Childcontrols weiter. Abhilfe schafft dieser Code:
Delphi-Quellcode:
Dazu muss die WMCommand-Methode überschrieben werden (ist nicht virtuell, macht aber in diesem Fall nix, da diese speziellen Nachrichtenbehandlungsmethoden anders behandelt werden)
procedure TControlGrid.WMCommand(var Message: TWMCommand);
var Control: TWinControl; begin Control := FindControl(Message.Ctl); if Control <> nil then Begin with TMessage(Message) do Result:=(Control.Perform(Msg + CN_BASE, WParam, LParam)); If Message.Result<>0 Then Inherited; End; end;
Delphi-Quellcode:
Vielleicht brauchts ja jemand nochmal.
protected
procedure WMCommand(var Message: TWMCommand); message WM_COMMAND; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:49 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