![]() |
Animiertes Menü
Hallo,
wollte mal fragen, ob jemand so eine Komponente kennt, die ein Panel oder so was von der Seite des Programms ausfahren und einfahren lässt. Slide Menü oder so... Hoffe ihr versteht mich... |
Re: Animiertes Menü
Hi!
Also ich kenne keine solche Komponente, bin auch verglichen zu anderen ein Einsteiger in Delphi^^. Ich würde aber so etwas vorschlagen:
Delphi-Quellcode:
Das kannst du dann genau so auch mit der höhe machen.
a := -20;
while a < 200 do begin Panel1.Left := a; inc(a); sleep(X); // wobei du mit X die schnelligkeit der Bewegung variieren kannst end; Ich hoffe mal ich habe keinen Fehler gemacht :wink: . Und ich hoffe auch es hilft dir weiter^^. PS: ich habe es selber nicht getestet |
Re: Animiertes Menü
Irgendwie funktioniert das nicht...
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin a := -20; while a < 200 do begin Panel1.Left := a; inc(a); sleep(80); // wobei du mit X die schnelligkeit der Bewegung variieren kannst end; end; |
Re: Animiertes Menü
Also ich habe es gerade ausprobiert. Bei mir geht das aber irgendwie auch nur halb :gruebel: .
(Ich nehme mal an du hast nicht vergessen die variable a zu deklarieren^^) Bei mir wird Panel1 nicht so eingeblendet wie gewollt, es verschwindet zunächst und erscheint dann nach einer zeit bei left=200. Ist irgendwie eine blöde Sache jetzt, tut mir leid aber ich kann jetzt auch nicht weiterhelfen. |
Re: Animiertes Menü
Kennt nicht vill noch jeamand eine Komponente für ein SlideMenü, SlidePanel oder so was...
|
Re: Animiertes Menü
Ich wüde es eher so machen:
Delphi-Quellcode:
Allerdings ist FormCreate nicht der richtige Ort. Nun kommt es noch darauf an wie und wann das Panel ausfahren soll.
procedure TForm.FormCreate(Sender: TObject);
var a: integer; begin a := -Panel1.Width; Panel1.Left := a; Panel1.Align := alNone; form1.DoubleBuffered := true; show; while a < 0 do begin Panel1.Left := a; inc(a); sleep(1); // bzw. Delay() hier aus der Delphipraxis application.ProcessMessages; end; Panel1.Align := alLeft; end; |
Re: Animiertes Menü
So, mal noch eine elegantere Version zum "ausklappen" eines Panels beim Mouseover ohne extra noch eine Komponente einzubauen.
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Panel1: TPanel; procedure FormCreate(Sender: TObject); private { Private-Deklarationen } procedure Panel1Showing; // Ausklappen procedure Panel1Hiding; // Einklappen public { Public-Deklarationen } procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; // Mouseoverereignisse procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; // abfangen end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin DoubleBuffered := true; // Form1 Panel1.Align := alNone; Panel1.Tag := -Panel1.Width + 5; Panel1.Left := Panel1.Tag; end; procedure TForm1.CMMouseEnter(var Message: TMessage); begin if Message.LParam = Longint(Panel1) then Panel1Showing; end; procedure TForm1.CMMouseLeave(var Message: TMessage); begin if Message.LParam = Longint(Panel1) then Panel1Hiding; end; procedure TForm1.Panel1Showing; begin while Panel1.Tag < 0 do begin Panel1.Left := Panel1.Tag; Panel1.Tag := Panel1.Tag + 1; sleep(1); // oder halt Delay verwenden application.ProcessMessages; end; Panel1.Align := alLeft; end; procedure TForm1.Panel1Hiding; begin windows.Beep(880,025); Panel1.Align := alNone; Panel1.Tag := 0; while Panel1.Tag > -Panel1.Width + 5 do begin Panel1.Left := Panel1.Tag; Panel1.Tag := Panel1.Tag - 1; sleep(1); // oder halt Delay verwenden application.ProcessMessages; end; end; end. |
Re: Animiertes Menü
Shr vielen Dank an dich TurboPascal!!
Wie kann ich das denn jetzt umschreibe, wenn man das alles auf der rechten Seite haben will, aso Panel1.Align := alRight ?? |
Re: Animiertes Menü
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn du es mit einem Button lösen möchtest kanst du im Beispiel mal nachschauen.
Um das gane rechtsbündig zu machen musst du nur ein wenig nachdenken. ;) |
Re: Animiertes Menü
@turboPASCAL: Funktioniert ja, aber eine kleine Anwendung die beiliegt kann nie schaden :wink:
|
Re: Animiertes Menü
Sry, aber ich komm überhaupt nicht weiter, meine ganze Form flackert, obwohl ich DouBleBuffered auf True hab... und ich bekomm das mit rechtsbündig nicht hin...
Ich möchte diese Funktion für mein Programm verwenden... ![]() und dabei möchte ich das meine Formatierungsbox ein- und ausblenbar ist... Hoffe du kannst mir weiterhelfen :cry: Ich komm nich weiter... |
Re: Animiertes Menü
Liste der Anhänge anzeigen (Anzahl: 1)
mahlzeit,
bei den jedi komponenten könnte das dabei sein was du suchst. im tab Jv XP Controls gibt es eine kompo die TXPPanel heist und sieht aus wie bei winxp die seiten panels im arbeitsplatz. ich hab mal ein screenshot angehängt der dir das verdeutlicht. bei den jedi komponenten ist auch eine demo dabei. alternativ hab ich aus einem alten projekt, das ich eingestellt habe, noch eine panel kompo mit den selben und einigen anderen funktionen. das panel ist leider noch etwas bugy da ich sie nach einstellung des projektes auch nicht weiter entwickelt habe. als anregung für eine eigene kompo kann sie allemal dienen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:06 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