Einblendbares Tab Control

Forum für alles rund um die MSEide und MSEgui

Einblendbares Tab Control

Beitragvon fliegermichl » 22. Sep 2017, 08:55 Einblendbares Tab Control

Kann man mit Bordmitteln so etwas erreichen wie mit der Windows Taskbar?

Normalerweise brauche ich so viel wie möglich Platz für die Zeichnung.
Wenn man nun ein neues Dach zu dem Projekt hinzufügen will, dachte ich mir, man fährt mit der Maus ganz an den rechten Bildschirmrand und dann blendet sich ein Tabpage ein, daß sich wieder ausblendet wenn man es mit der Maus verlässt.
fliegermichl
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

Beitragvon Erwin » 22. Sep 2017, 09:42 Re: Einblendbares Tab Control

Suchst Du vielleicht so was in der Art?

Code: Alles auswählen
 
procedure TForm1.Panel1MouseEnter(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Panel1.Width:=100;
  Panel1.Left:=400;
end;
 
procedure TForm1.Panel1MouseLeave(Sender: TObject);
begin
  Panel1.Width:=5;
  Panel1.Left:=495;
end;
 

Das Panel ist am Anfang nur 5 Pixel breit. Kann man ja vielleicht noch etwas schmaler machen, wenn es eh dann am äußerstem Rand ist.
So bald man dann drüber führt, wird es 100 Pixel breit und verschiebt sich um 100 Pixel minus vorherige Breite (5) in den Bildschirm rein.
So bald man mit dem Mauszeiger das Panel verlässt, wird es wieder 5 Pixel schmal und verschiebt sich zurück an den Rand.

Oder wenn es einem nicht stört, dass es über den Rand hinaus geht, solte man es auch so machen können:
Code: Alles auswählen
 
procedure TForm1.Panel1MouseEnter(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Panel1.Left:=400;
end;
 
procedure TForm1.Panel1MouseLeave(Sender: TObject);
begin
  Panel1.Left:=495;
end;
 


Edit:
Panel1MouseMove im Code durch Panel1MouseEnter ersetzt, was noch einfacher und sinnvoller sein dürfte, und auch den Code schmaler machte.
Win 7 / Lazarus 1.6 / FP 3.0.0 / x86_64-win64-win32/win64
Erwin
 
Beiträge: 126
Registriert: 16. Sep 2009, 13:15
OS, Lazarus, FPC: Xubuntu 16.04 / x86_64_linux-gtk 2 / L 1.6+dfsg-1 / FPC 3.0.0 | 
Nach oben

Beitragvon fliegermichl » 22. Sep 2017, 10:09 Re: Einblendbares Tab Control

Ja klar, auf die einfachste Lösung kommt man nicht :-)
Danke
fliegermichl
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

Beitragvon mse » 22. Sep 2017, 13:08 Re: Einblendbares Tab Control

Nimm ein teventwidget als Container (tab 'Widget', das Symbol mit dem roten Pfeil). teventwidget hat alle zur Verfügung stehende event-Eigenschaften als published Versionen. Dazu ein ttimer mit "options:= to_single". Setze buttoncontainer.OnChildMouseEvent und OnMouseEvent auf buttoncontainerOnMouseEvent_OnChildMouseEvent().
Code: Alles auswählen
 
procedure tmainfo.showbuttons();
begin
 hidetimer.enabled:= false;
 buttoncontainer.left:= width - buttoncontainer.width;
end;
 
procedure tmainfo.hidebuttons();
begin
 buttoncontainer.left:= width - 10;
end;
 
procedure tmainfo.hidetimerOnExecute(const sender: TObject);
begin
 hidebuttons();
end;
 
procedure tmainfo.buttoncontainerOnMouseEvent_OnChildMouseEvent(
              const sender: twidget; var ainfo: mouseeventinfoty);
begin
 case ainfo.eventkind of
  ek_mouseenter: begin
   showbuttons();
  end;
  ek_mouseleave: begin
   hidetimer.restart();
  end;
 end;
end;
 
mse
 
Beiträge: 1713
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.4.2,git master FPC 3.0,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon fliegermichl » 23. Sep 2017, 13:15 Re: Einblendbares Tab Control

Ja so hab ich das jetzt gemacht und den Timer gleich noch dazu verwendet, den buttoncontainer animiert raus und rein zu fahren.

Danke
fliegermichl
 
Beiträge: 145
Registriert: 9. Jun 2011, 08:42

• Themenende •

Zurück zu MSEide und MSEgui



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried