AGB  ·  Datenschutz  ·  Impressum  







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

StatusBar: Panel-Breite herausfinden

Ein Thema von Quake · begonnen am 30. Jul 2004 · letzter Beitrag vom 10. Mär 2007
Antwort Antwort
Quake

Registriert seit: 25. Aug 2003
222 Beiträge
 
Delphi 7 Enterprise
 
#1

StatusBar: Panel-Breite herausfinden

  Alt 30. Jul 2004, 09:23
Hallo,

wie kann man die Breite des letzten (rechten) Panels eines StatusBar herausfinden.
"StatusBar.Panels[x].Width" bringt nicht das gewünschte Ergebnis, da die tatsächlich angezeigte Breite viel größer ist als die, die "StatusBar.Panels[x].Width" steht. Ausserdem kann sich die Größe des Panels auch verändern, wenn ich das Fester vergrößere.

bye
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: StatusBar: Panel-Breite herausfinden

  Alt 30. Jul 2004, 09:57
Delphi-Quellcode:
// liefert die Abmessungen eines Panels auf einem Statusbar
function GetStatusbarPanelRect(sb: TStatusBar; idx:Integer):TRect;
begin
   SendMessage(sb.Handle,SB_GETRECT, idx, integer(@Result));
end;

// findet das Panel unter dem Punkt Pt
// nützlich, um das angeklickte Statusbar Panel zu ermitteln
function GetStatusBarPanel(sb: TStatusBar; const Pt: TPoint): Integer;
var i: Integer; rcPanel: TRect;
begin
   Result := -1;
   for i := sb.Panels.Count-1 to 0 do
   begin
      GetStatusbarPanelRect(sb, i);
      if PtInRect(rcPanel,Pt) then
      begin
      Result := i;
      Break;
      end;
   end;
end;
Andreas
  Mit Zitat antworten Zitat
Quake

Registriert seit: 25. Aug 2003
222 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: StatusBar: Panel-Breite herausfinden

  Alt 30. Jul 2004, 10:34
Danke

Ich habe ebend auch noch gesehen, das bei der Procedure "OnDrawPanel" das Rect mitgeliefert wird.

ciao
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#4

Re: StatusBar: Panel-Breite herausfinden

  Alt 21. Aug 2005, 20:42
Zitat von shmia:
Delphi-Quellcode:
// liefert die Abmessungen eines Panels auf einem Statusbar
function GetStatusbarPanelRect(sb: TStatusBar; idx:Integer):TRect;
begin
   SendMessage(sb.Handle,SB_GETRECT, idx, integer(@Result));
end;

// findet das Panel unter dem Punkt Pt
// nützlich, um das angeklickte Statusbar Panel zu ermitteln
function GetStatusBarPanel(sb: TStatusBar; const Pt: TPoint): Integer;
var i: Integer; rcPanel: TRect;
begin
   Result := -1;
   for i := sb.Panels.Count-1 to 0 do
   begin
      GetStatusbarPanelRect(sb, i);
      if PtInRect(rcPanel,Pt) then
      begin
      Result := i;
      Break;
      end;
   end;
end;
Wenn auch schon etwas viel später ... ich habe nämlich den Code verwendet, nur hat er nicht und nicht funktioniert.
Die Funktion GetStatusBarPanel war nämlich irgenwie fehlerhaft: verbesserte Version
Result := -1;
for i := sb.Panels.Count - 1 downto 0 do begin
rcPanel := GetStatusbarPanelRect(sb, i);
if PtInRect(rcPanel, Pt) then begin
Result := i;
Break;
end;
end;


LG
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
Peeters

Registriert seit: 3. Dez 2002
Ort: Meerbusch
86 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: StatusBar: Panel-Breite herausfinden

  Alt 28. Dez 2005, 15:53
Habe das o.g. Beispiel bei mir mal versucht anzuwenden, bekomme aber eine Fehlermeldung:

Undefinierter Bezeichner "SB_GETRECT"

Warum?
Peeters
  Mit Zitat antworten Zitat
dfried

Registriert seit: 16. Aug 2005
486 Beiträge
 
#6

Re: StatusBar: Panel-Breite herausfinden

  Alt 28. Dez 2005, 15:59
Du musst vermutlich die Unit "CommCtrl" noch in deine Uses-Klausel mit aufnehmen
  Mit Zitat antworten Zitat
FLINKER_FINGER

Registriert seit: 29. Apr 2004
Ort: Berlin
131 Beiträge
 
#7

Re: StatusBar: Panel-Breite herausfinden

  Alt 10. Mär 2007, 18:22
hallo,
ich stehe gerade irgendie auf dem Schlauch.
Bekomme es einfach nicht hin die funktion aufzurufen. Es fehlen mir die Übergabeparameter. Wäre jmd. so nett das zu posten ?!
Also wie der Aufruf der Funktion in einer Procedure aussieht. Nach Möglichkeit kurz zu den Übergabeparametern was sagen.
Ich wäre echt dankbar !

Gruß
FLINKER_FINGER
  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 11:13 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