Status Bar
Hasznos lehet programjainkban, ha futás
közben bizonyos információk állandóan láthatók a képernyőn. Erre a
legkézenfekvőbb megoldás a form alján a státuszsor
(Status Bar). Ebben a projectben létrehozunk egy státuszsort, és benne
megjelenítünk a program futása szempontjából lényeges információkat.
A project szokásos előkészítése után a főformra helyezzünk el egy StatusBar-t
a Win32 palettáról. Az elem a form alsó részében,
teljes szélességben, egy alapértelmezett karakternyi vastagságban jelenik meg,
kerettel, jobb alsó csúcsánál átméretező ikonnal, ha a látvány nem a teljes
képernyő. A StatusBar neve legyen stMinta.
Kettős kattintással juthatunk a StatusBar
Panelszerkesztőjébe.
Az első Ikonja segítségével a StatusBar-ba paneleket szúrhatunk, a másodikkal
törölhetünk. A nyilak segítségével a paneleken mozoghatunk. A panel szélességét
a Width tulajdonsága tartalmazza, mely szükség
szerint módosítható. Szúrjunk be 4 panelt (0-3), és állítsunk be a
szélességeket: 100, 80, 60, 40. (Az utolsó szélességi érték mindig a maradék
lesz, a beállított értéktől függetlenül.) A
szélességek a form megjelenítési méreteitől nem
függnek, ha valamely panel már nem fér a form
ablakába, akkor nem látszik.
A panelek legfontosabb tulajdonsága a Text. Ide beírhatjuk azokat az információkat, amelyet a
program futása alatt látni szeretnénk. A 0. panelen például jelenjen meg a
következő: Felhasználó: admin. A következőben
jelenítsük meg a CapsLock állapotát, a harmadikban a
program indításától eltelt időt, a negyedikben a gépi dátumot és időt. Ez
utóbbiak csak futási időben értelmezhetők, ezért ehhez kódolásra van szükség.
Mivel a megjelenített információk időben változnak (változhatnak), ezért a
megjelenítést időzítőre bízzuk. Helyezzünk a formra
egy időzítőt a System palettáról. Nevezzük el tmIdozito-nek. Az időzítő Interval
tulajdonságát ne változtassuk meg (1000), így a StatusBar
másodpercenként fog frissülni. Az időzítő feladatát a listába az időzítőn
történő kettős kattintással generálódott szakaszban kell elhelyezni. A kódot a
project listájából kiolvashatjuk.
A program futási képe:
A program listája:
unit UStatusBar;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls;
type
TfmStatusBar = class(TForm)
stMinta: TStatusBar;
tmIdozito: TTimer;
procedure tmIdozitoTimer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmStatusBar: TfmStatusBar;
Start: TDateTime;
implementation
{$R *.dfm}
procedure TfmStatusBar.FormCreate(Sender: TObject);
begin
Start:= Now;
end;
procedure TfmStatusBar.tmIdozitoTimer(Sender: TObject);
begin
With stMinta Do
Begin
If Odd(GetKeyState(VK_CAPITAL)) Then Panels[1].Text:='CAPS bekapcs'
Else Panels[1].Text:='';
Panels[2].Text:= TimeToStr(Start-Now);
Panels[3].Text:= DateToStr(Now)+' / '+TimeToStr(Now);
End;
end;
end.