![]() |
Gruppieren von zur Laufzeit erzeugten Toolbuttons
hallo,
die gruppierung von toolbuttons wird fehlerhaft, wenn zur laufzeit zusätzliche toolbuttons erzeugt werden. der fehler ist immer der gleiche, egal ob 1 oder mehrere toolbuttons zusätzlich erzeugt werden (in der toolbar rechts angefügt): die markierungs-anzeige verrutscht um eine position nach links. beispiel: 4 toolbuttons sind vorgegeben, toolbutton2 und toolbutton3 sind gruppiert (grouped=true, style=tbsCheck), was auch wunderbar funktioniert bis sie zur laufzeit erzeugte gesellschaft bekommen, zb einen toolbutton5, in der toolbar rechts von toolbutton4 eingefügt. dann ist nämlich nach klick auf toolbutton3 toolbutton2 markiert, nach klick auf toolbutton2 ist toolbutton1 markiert (obwohl der gar nicht gruppiert ist). mit folgendem code füge ich ein:
Delphi-Quellcode:
wie kann ich den fehler vermeiden?
MyToolbutton := TToolbutton.Create(form1);
MyToolbutton.Caption := 'nBook1'; MyToolbutton.Parent := toolbar1; mytoolbutton.ImageIndex:=48; mytoolbutton.name:='nBook01'; mytoolbutton.enabled:=true; mytoolbutton.OnClick:=buttonClick; with Toolbar1.BoundsRect do mytoolbutton.SetBounds(Right, Top, mytoolbutton.Width, mytoolbutton.Height); MyToolbutton.visible:=true; joseph_l |
Re: Gruppieren von zur Laufzeit erzeugten Toolbuttons
Hallo joseph_l,
das alleinige Setzen der Parent-Eigenschaft reicht leider nicht aus um den Button in die Toolbar einzufügen. Zum Ansprechen der protected-Methode TToolButton.SetToolBar benötigt man einen "ClassCracker":
Delphi-Quellcode:
Die Deklaration von TButtonCracker muß global sein, da Delphi keine lokalen Klassen unterstützt.
type
TButtonCracker = class (TToolButton); begin MyToolbutton := TToolbutton.Create(form1); MyToolbutton.Caption := 'nBook1'; // MyToolbutton.Parent := toolbar1; <-- entfernt mytoolbutton.ImageIndex:=48; mytoolbutton.name:='nBook01'; mytoolbutton.enabled:=true; mytoolbutton.OnClick:=buttonClick; with Toolbar1.BoundsRect do mytoolbutton.SetBounds(Right, Top, mytoolbutton.Width, mytoolbutton.Height); MyToolbutton.visible:=true; TButtonCracker(MyToolbutton).SetToolBar(toolbar1); // <-- hinzugefügt end; Gruß Hawkeye |
Re: Gruppieren von zur Laufzeit erzeugten Toolbuttons
hallo adlerauge,
guter tip, danke joseph_l |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:18 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 by Thomas Breitkreuz