Mam statusBar no i wiadomo, że podzielony jest na panele. Teraz moje pytania:
- Jak na panelu umieścić ikonkę?
- Jak pokazać hinty - oddzielne hinty, dla oddzielnych paneli?
Muszisz się pobawić Canvasem.
-=JaCkObS=- napisał(a)
Muszisz się pobawić Canvasem.
Z tym, że Panel statusu nie ma Canvasa(a przypisać TControlCanvas też nie można). Tak więc musiałbym malować wszystko na całym statusie. Trochę bez sensu. Chyba już po prostu będę mu przypisywał TImage jako dziecko....
No tak... ale możesz zrobić coś takiego:
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
const Rect: TRect);
begin
if Panel = Statusbar1.Panels[NrPanela] then
begin
{...}
Statusbar1.Canvas.FillRect(Rect);
Statusbar1.Canvas.Draw(Rect.Left, Rect.Top, ZoneIcon);
end;
else {...}
end;
http://delphi.about.com/library/weekly/aa030805a.htm
tak samo z image czy co tam chcesz
a faktycznie ;]
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceshellui5/html/wce50lrfsb_seticon.asp
a zanim sie ktos zapyta...
const SB_SETICON = WM_USER + 15;
cimak napisał(a)
a faktycznie ;]
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceshellui5/html/wce50lrfsb_seticon.asp
Ja bym raczej skierował na: http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/status/messages/sb_seticon.asp (bo w Delphi raczej nie pisze się programów dla WindowsCE :) )
cimak napisał(a)
a zanim sie ktos zapyta...
const SB_SETICON = WM_USER + 15;
zanim ktoś zapyta:
uses
..., CommCtrl;
:)
Juhas napisał(a)
Mam statusBar no i wiadomo, że podzielony jest na panele. Teraz moje pytania:
2. Jak pokazać hinty - oddzielne hinty, dla oddzielnych paneli?
W module, zaraz na początku, a w każdym razie przed deklaracją klasy formatki, umieść takie coś:
TStatusBar = class(ComCtrls.TStatusBar)
public
procedure CreateParams(var Params: TCreateParams); override;
end;
Potem dalej w kodzie:
procedure TStatusBar.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style := Params.Style or SBT_TOOLTIPS;
end;
Spowoduje to włączenie wyświetlania hintów przez StatusBar. Hinty dodaje się za pomocą:
SendMessage(StatusBar.Handle, SB_SETTIPTEXT, _NUMER_, Integer(PChar(TIPTEXT)));
gdzie NUMER to liczony od zera numer "komórki" statusbara a TIPTEXT to oczywiście tekst hinta.
Takie hinty mają jedną wadę: nie są zawsze wyświetlane. StatusBar wyświetla hint dla "komórki" tylko w dwóch przypadkach:
Ten drugi przypadek można wymusić: za właściwym tekstem komórki należy umieścić dużo spacji. Tu też jest ograniczenie, bo tekst dla "komórki" może mieć maksymalnie 127 znaków (nie dotyczy to "komórek" typu OwnerDraw).
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.