Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Statusbar + Image (https://www.delphipraxis.net/97393-statusbar-image.html)

Störtebeker 9. Aug 2007 19:41


Statusbar + Image
 
Wie kann ich denn der Statusbar Images andrehen? Finde im OI nämlich keine Option dazu.

Folgendes ist gemeint:

http://docs.huihoo.com/development/d.../statusbar.gif

Thx. schonmal.

RWarnecke 9. Aug 2007 19:49

Re: Statusbar + Image
 
Vielleicht so, wie ich hier der Statusbar eine Uhr angedreht habe.
Delphi-Quellcode:
  // Die Uhr in das dritte Panel setzen von der Statusbar
  MainStatusbar.Perform(SB_GETRECT, 2, Integer(@R));
  Clock.Parent := MainStatusbar; //Clock adoptieren
  Clock.Top := r.Top; //Größe der
  Clock.Left := MainForm.Width - 250; //Clock setzen
  Clock.Width := 100; //und an Panel anpassen
  Clock.Height := r.Bottom - r.Top;
Nur statt der Uhr ein ein TImage nehmen.

Hawkeye219 9. Aug 2007 20:09

Re: Statusbar + Image
 
Hallo,

wäre in diesem Fall ein Panel mit Delphi-Referenz durchsuchenTStatusPanel.Style = psOwnerDraw nicht einfacher?

Delphi-Quellcode:
procedure TForm1.StatusBar1DrawPanel (StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
  ImageList1.Draw (StatusBar.Canvas, Rect.Left, Rect.Top, 0);
end;
Gruß Hawkeye

Luckie 9. Aug 2007 21:30

Re: Statusbar + Image
 
Noch einfacher: MSDN-Library durchsuchenSB_SETICON. Ich habe hier schon mal dazu Cod egepostet, musst du mal suchen: Hier im Forum suchenSB_SETICON oder guck mal in meinen Win32-API Tutorials für Delphi.

Reinhardtinho 27. Sep 2007 10:14

Re: Statusbar + Image
 
Hi,

ich habe eine zu diesem Thread passende Frage.
Und zwar habe ich mit diesem Code ein Icon in die Statusbar gezeichnet.

Zitat:

Zitat von Hawkeye219
Hallo,

wäre in diesem Fall ein Panel mit Delphi-Referenz durchsuchenTStatusPanel.Style = psOwnerDraw nicht einfacher?

Delphi-Quellcode:
procedure TForm1.StatusBar1DrawPanel (StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
begin
  ImageList1.Draw (StatusBar.Canvas, Rect.Left, Rect.Top, 0);
end;
Gruß Hawkeye


Wie kann ich zur Laufzeit das Icon wieder löschen?

So habe ich es bisher:
Delphi-Quellcode:
 
  var
    EmptyArticle : Boolean;

  ...

  if (Panel.Index = 2)then
  begin
    if EmptyArticle then
      ImageList2.Draw(StatusBar.Canvas, Rect.Left, Rect.Top, 7)  
    else ImageList2.Draw(StatusBar.Canvas, Rect.Left, Rect.Top, 8);
  end (* of if *)
An der Position 7 habe ich das Icon was dort gezeichnet werden soll, an der Position 8 habe ich ein leeres Bitmap der Imagelist eingefügt, aber das legt sich wahrscheinlich nur über das andere drüber und man sieht es noch.

Ich habe auch schon mit Index = -1 probiert, aber das hat auch nicht geklappt.


Vielen Dank!

MFG
Lorenz

s-off 27. Sep 2007 10:19

Re: Statusbar + Image
 
Hallo,

Du könntest ein Rect in der Farbe der Statusbar drübermalen.

Reinhardtinho 27. Sep 2007 10:26

Re: Statusbar + Image
 
Hi,
das habe ich auch schon überlegt, dass ich das irgendwie übermale, allerdings benutze ich eine Skin-Komponente und die StatusBar wird nun dadurch mit einen Farbverlauf gezeichnet.

MFG
Lorenz

s-off 27. Sep 2007 10:33

Re: Statusbar + Image
 
Dann erzeuge ein Icon mit besagtem Farbverlauf, füge dieses zu Deiner ImageList hinzu und lege es bei Bedarf über das entsprechende Icon, das Du 'verschwinden' lassen möchtest.

Reinhardtinho 27. Sep 2007 10:44

Re: Statusbar + Image
 
So habe ich es gemacht, funktioniert, danke für den Tipp!

MFG
Lorenz


Alle Zeitangaben in WEZ +1. Es ist jetzt 03: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