![]() |
Toolbar / Mainmenu - wie aktualisieren?
Hallo,
vielleicht ist in meinem "Berlin" ja was kaputt... Ich habe eine TToolbar auf mein Form1 geklickt. Das MainMenu1 habe ich in Form1 entfernt, es aber dann Toolbar1.Menu zugeordnet. Soweit sieht es toll aus. Wie komme ich jetzt aber zur Designtime an die Toolbar-Buttons ran? Irgendwie gibt in der IDE keinen Editor oder die TToolbar hat keine Eigenschaft Buttons, Items oder ähnlich. Selbst wenn ich die MenuItems mit dem Menu-Editor bearbeite, werden sie in der Toolbar aber nicht aktualisiert. Im Quelltext kann ich wohl an Toolbar1.Buttons[...] kommen, aber wenn ich zB width:=40 setze, wird mir der Button nur an eine andere Position auf der Toolbar gesetzt und nicht die Weite... Und wenn ich zur Runtime ein MenuItem.ImageIndex setze, wird es nicht im Toolbar aktualisiert - was übersehe ich? Wie macht man es? :cry: |
AW: Toolbar / Mainmenu - wie aktualisieren?
Hallo.
Schon probiert Delphi mal zu schließen und neu zu öffnen? *.dsk aus dem Projektordner löschen (wenn Delphi zu ist). Das lößt eigentlich 99% aller Probleme. |
AW: Toolbar / Mainmenu - wie aktualisieren?
Kannst Du nicht einfach auf den toolbar-Button klicken um ihn im Object Inspector (als TToolbutton) zu sehen?
|
AW: Toolbar / Mainmenu - wie aktualisieren?
Zitat:
Mit rechter Maustaste habe ich im Popup nur die Menüpunkte "Neuer Schalter" und "Neuer Trenner" sowie ein paar "Quick-".., aber die ich erreiche ich ja auch alle im OI. Ich habe auch in "Formular als Text ansehen" geschaut, ob ich dort die Buttons editieren kann, aber es ist nur der kurze Block mit den Eigenschaften zur TToolbar selbst dort. Wahrscheinlich, weil es alles aus dem TMainMenu zusammenbaut. |
AW: Toolbar / Mainmenu - wie aktualisieren?
Zitat:
Nur, daß es jetzt viel länger braucht, um das MainForm anzuzeigen. |
AW: Toolbar / Mainmenu - wie aktualisieren?
Das sollte doch in der Strukturansicht der Form zu finden sein können. Da wird ja alles, was auf der Form liegt alphabetisch und hierarchisch aufgelistet. Zu einem Grid zB die diversen Columns als Untergruppe.
Sherlock |
AW: Toolbar / Mainmenu - wie aktualisieren?
Zitat:
|
AW: Toolbar / Mainmenu - wie aktualisieren?
Zitat:
Ich habe entdeckt, daß dieses Verhalten auch in der Hilfe so beschrieben ist. :oops: Meine Toolbar ist so eingerichtet
Code:
Daher habe ich jetzt beim FormCreate geschrieben
object ToolBar1: TToolBar
Left = 0 Top = 0 Width = 1040 Height = 36 ButtonHeight = 36 ButtonWidth = 76 Color = clCream DrawingStyle = dsGradient GradientEndColor = clSilver GradientStartColor = clWhite HotTrackColor = clSkyBlue Images = ImageList1 Menu = MainMenu1 GradientDrawingOptions = [gdoGradient] ParentColor = False ShowCaptions = True TabOrder = 1 Transparent = False Wrapable = False end
Delphi-Quellcode:
Das macht mir alle Buttons so breit wie den ersten, so daß sie für meine Zwecke auf einem Touchscreen gut bedient werden können (Eigenschaft Toolbar.List=false und ShowCaption=true - Ich habe dadurch oben das Icon und drunter das Caption, so sind sie "fingerdick").
for I := 0 to Toolbar1.ButtonCount-1 do begin
Toolbar1.Buttons[i].AutoSize:=false; Toolbar1.Buttons[i].Tag:=i; end; Aktualisieren tue ich die Buttons jetzt durch das Event MainMenu1.onChange (die Icons sind Statusanzeigen und ändern sich gelegentlich)
Delphi-Quellcode:
Durch das Ändern des Buttons wird die Anzeige aktualisiert. :thumb:
procedure TForm1.MainMenu1Change(Sender: TObject; Source: TMenuItem; Rebuild: Boolean);
var i:byte; begin for I := 0 to Toolbar1.ButtonCount-1 do begin Toolbar1.Buttons[i].ImageIndex:=MainMenu1.Items[i].ImageIndex; if Toolbar1.Buttons[i].tag=9 then Toolbar1.Buttons[i].Caption:=MainMenu1.Items[i].caption; // hier wird ein Zähler angezeigt end; end; Ich hatte zuvor im Programm Styles verwendet. Um es nun an Windows10 mehr anzupassen (breiter Rahmen ist schön um das Programm, aber jetzt ist ein sehr dünner Rahmen besser), habe ich dann das Style entfernt. Danach hatte ich das Problem, daß das MainMenu geflackert hatte (Es wird nicht doublebuffered, im Style aber schon!?). Irgendwo wurde da wohl etwas immer noch zu lange (oder zu häufig unnötig) neugezeichnet, was das Flackern ausgelöst hat (gemäß einem Tipp hier im Forum). Ich hab das Flackern nicht wegbekommen. Deshalb habe ich das Menü jetzt auf die Toolbar gelegt. Und für mich völlig überraschend: das Programm läuft jetzt superflott :cyclops: (im Vergleich zu vorher mit dem MainMenu - es ist noch da, aber wird nicht mehr gezeichnet -> Quantensprung. Wie kann das sein?). |
AW: Toolbar / Mainmenu - wie aktualisieren?
Wie ist das denn, wenn man im MainMenu so Strukturen hat, die weitere Untermenüpunkte ausklappen? Kann das die Toolbar auch? Oder kommt das bei dir nicht vor? Denn wenn du nur auf oberster Ebene ein paar Menü-Punkte / Buttons hast, hättest du das MainMenü ja komplett ersetzen und alle Buttons in der Toolbar selber erstellen können. Wäre dann zur Designtime vielleicht leichter gewesen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 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