좀...그냥 돌렸습니다.
단 마지막 Panel은 길이가 마지막 전체 길이가 아니므로 설정을 잘해주어야 됩니다. Width에 충분한 값을 넣으세요.
procedure TForm1.StatusBar1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
i, Cpos : integer;
CursorPos: TPoint;
begin
Cpos := 0;
StatusBar1.ShowHint := False;
for i := 0 to StatusBar1.Panels.Count-1 do begin
Cpos := Cpos + StatusBar1.Panels.Items[i].Width;
if X < Cpos then begin
case i of
0 : StatusBar1.Hint := '000';
1 : StatusBar1.Hint := '111';
2 : StatusBar1.Hint := '222';
else
StatusBar1.Hint := '333';
end;
//application.HintPause:=0;
//Application.HintHidePause:=5000;
StatusBar1.ShowHint := True;
CursorPos:= Mouse.CursorPos;
Application.ActivateHint(CursorPos);
상태바를 여러개의 판넬로 나누시고 상태바의 MouseMove 이벤트에서
처리해주면 되겠네요
다음은 상태바를 4개의 탄넬로 나누고 각각의 판엘의 길이가 215인 경우
procedure TForm1.StatusBar1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if x < 215 then
StatusBar1.Hint := 'first'
else if x < 430 then
StatusBar1.Hint := 'second'
else if x < 645 then
StatusBar1.Hint := 'third'
else
StatusBar1.Hint := 'fourth';
end;
단 마지막 Panel은 길이가 마지막 전체 길이가 아니므로 설정을 잘해주어야 됩니다. Width에 충분한 값을 넣으세요.
procedure TForm1.StatusBar1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
i, Cpos : integer;
CursorPos: TPoint;
begin
Cpos := 0;
StatusBar1.ShowHint := False;
for i := 0 to StatusBar1.Panels.Count-1 do begin
Cpos := Cpos + StatusBar1.Panels.Items[i].Width;
if X < Cpos then begin
case i of
0 : StatusBar1.Hint := '000';
1 : StatusBar1.Hint := '111';
2 : StatusBar1.Hint := '222';
else
StatusBar1.Hint := '333';
end;
//application.HintPause:=0;
//Application.HintHidePause:=5000;
StatusBar1.ShowHint := True;
CursorPos:= Mouse.CursorPos;
Application.ActivateHint(CursorPos);
exit;
end;
end;
end;
hsr////////////////////////////////////////////