
[gelöst] Hamburger Menü
[gelöst] Hamburger Menü
Gibt es für FPC/Lazarus bereits eine Komponente, die ein "Hamburger Menü" bereitstellt? Ich möchte in meinem Projekt ein Menü hinzufügen, dass sich links oder rechts der Form "versteckt" und beim Klicken auf ein Button herauskommt. Auf so einem Raspberry ist halt nicht so viel Platz und das Menü wird nur selten gebraucht. Vielleicht hat jemand so etwas bereits fertiggestellt und möchte seinen Code mit mir teilen? 

Zuletzt geändert von joesky am Mo 24. Jan 2022, 23:11, insgesamt 1-mal geändert.
Re: Hamburger Menü
Natrürlich! Sieht aber nicht so schick aus... 

Re: Hamburger Menü
Doch, das sieht sehr schick aus!

Sind sonst noch Fragen?
-
- Beiträge: 2122
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Hamburger Menü
Dafür braucht man keine komponente, einfach einen Button und ein panel.
Setze das panel genau außerhalb von der Form (also left auf - width) und die höhe auf die höhe der form. Als anchros setzt du dan left, top und bottom damit es entsprechend dem formresizing bleibt.
Beim klick auf den menü button startest du dann einen timer der mit jedem tick das fenster ein stück nach rechts bewegt bis left >= 0 ist, und für das verstecken das gleiche
Ist die ganz einfache variante. Um ein bisschen sparsamer mit Code und Komponenten zu sein kann man das über einen Button und einen Timer + Boolean variable (show oder hide) setzen
Setze das panel genau außerhalb von der Form (also left auf - width) und die höhe auf die höhe der form. Als anchros setzt du dan left, top und bottom damit es entsprechend dem formresizing bleibt.
Beim klick auf den menü button startest du dann einen timer der mit jedem tick das fenster ein stück nach rechts bewegt bis left >= 0 ist, und für das verstecken das gleiche
Code: Alles auswählen
procedure TMainForm.ShowMenuButtonClick(Sender: TObject);
begin
ShowMenuTimer.Enabled := True;
end;
procedure TMainForm.HideMenuButtonClick(Sender: TObject);
begin
HideMenuTimer.Enabled := True;
end;
procedure TMainForm.ShowMenuTimerTimer(Sender: TObject);
begin
HideMenuTimer.Enabled := False;
MenuPanel.Left := MenuPanel.Left + 10;
if MenuPanel.Left >= 0 then
begin
MenuPanel.Left := 0;
ShowMenuTimer.Enabled := False;
end;
end;
procedure TMainForm.HideMenuTimerTimer(Sender: TObject);
begin
ShowMenuTimer.Enabled := False;
MenuPanel.Left := MenuPanel.Left - 10;
if MenuPanel.Left <= -MenuPanel.Width then
begin
MenuPanel.Left := -MenuPanel.Width;
HideMenuTimer.Enabled := False;
end;
end;
Re: Hamburger Menü
Wie theo bereits gesagt hat, würde ich es auch so versuchen.
Ich habe hier ein kleines Projekt gebastelt um es zu demonstrieren.
Ich habe hier ein kleines Projekt gebastelt um es zu demonstrieren.
- Dateianhänge
-
project1.zip
- (126.51 KiB) 91-mal heruntergeladen
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Hamburger Menü
Hi!
Wie Theo schon sagte:
Man kann PopUpMenüs auch schick machen.
Kleines Beispiel im Anhang.
Winni
Wie Theo schon sagte:
Man kann PopUpMenüs auch schick machen.
Kleines Beispiel im Anhang.
Winni
- Dateianhänge
-
- popup.png (17.88 KiB) 1633 mal betrachtet
Re: Hamburger Menü
Ich hab die Lösung von Warf umgesetzt, nur halt die etwas sparsamere Version. Klappt sehr gut. Vielen Dank.
Ich hab das Popupmenü auch schon mal für solche Menüs genutzt, es war aber nicht meine Idee für dieses Menü.
Ich hab das Popupmenü auch schon mal für solche Menüs genutzt, es war aber nicht meine Idee für dieses Menü.