AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Toolbar / Mainmenu - wie aktualisieren?

Ein Thema von SearchBot · begonnen am 9. Mai 2022 · letzter Beitrag vom 12. Mai 2022
Antwort Antwort
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
317 Beiträge
 
Delphi 12 Athens
 
#1

Toolbar / Mainmenu - wie aktualisieren?

  Alt 9. Mai 2022, 15:22
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?
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
691 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Toolbar / Mainmenu - wie aktualisieren?

  Alt 9. Mai 2022, 17:29
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.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
704 Beiträge
 
Delphi 12 Athens
 
#3

AW: Toolbar / Mainmenu - wie aktualisieren?

  Alt 9. Mai 2022, 19:16
Kannst Du nicht einfach auf den toolbar-Button klicken um ihn im Object Inspector (als TToolbutton) zu sehen?
Peter Below
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
317 Beiträge
 
Delphi 12 Athens
 
#4

AW: Toolbar / Mainmenu - wie aktualisieren?

  Alt 10. Mai 2022, 13:56
Kannst Du nicht einfach auf den toolbar-Button klicken um ihn im Object Inspector (als TToolbutton) zu sehen?
Nein, das wäre schön - es wählt nur die ganze Toolbar an.
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.
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
317 Beiträge
 
Delphi 12 Athens
 
#5

AW: Toolbar / Mainmenu - wie aktualisieren?

  Alt 10. Mai 2022, 13:58
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.
Ausprobiert - unverändert.
Nur, daß es jetzt viel länger braucht, um das MainForm anzuzeigen.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#6

AW: Toolbar / Mainmenu - wie aktualisieren?

  Alt 10. Mai 2022, 15:29
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
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
704 Beiträge
 
Delphi 12 Athens
 
#7

AW: Toolbar / Mainmenu - wie aktualisieren?

  Alt 10. Mai 2022, 16:16
Kannst Du nicht einfach auf den toolbar-Button klicken um ihn im Object Inspector (als TToolbutton) zu sehen?
Nein, das wäre schön - es wählt nur die ganze Toolbar an.
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.
Dann versucvh mal, die Menu-property des Toolbar zu löschen und neu auf das Mainmenu zu setzen.
Peter Below
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
317 Beiträge
 
Delphi 12 Athens
 
#8

AW: Toolbar / Mainmenu - wie aktualisieren?

  Alt 12. Mai 2022, 09:52
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?).
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#9

AW: Toolbar / Mainmenu - wie aktualisieren?

  Alt 12. Mai 2022, 10:39
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.
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr.
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