Zitat:
Dann versucvh mal, die Menu-property des Toolbar zu löschen und neu auf das Mainmenu zu setzen.
In diesem Fall wird das Menü aktualisiert. Aber Zugriff auf die Buttons im Designer habe ich trotzdem nicht.
Ich habe entdeckt, daß dieses Verhalten auch in der Hilfe so beschrieben ist.
Meine Toolbar ist so eingerichtet
Code:
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
Daher habe ich jetzt beim FormCreate geschrieben
Delphi-Quellcode:
for I := 0 to Toolbar1.ButtonCount-1 do begin
Toolbar1.Buttons[i].AutoSize:=false;
Toolbar1.Buttons[i].Tag:=i;
end;
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").
Aktualisieren tue ich die Buttons jetzt durch das Event MainMenu1.onChange (die Icons sind Statusanzeigen und ändern sich gelegentlich)
Delphi-Quellcode:
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;
Durch das Ändern des Buttons wird die Anzeige aktualisiert.
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
(im Vergleich zu vorher mit dem MainMenu - es ist noch da, aber wird nicht mehr gezeichnet -> Quantensprung. Wie kann das sein?).