Форум: "Основная";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];
ВнизКак в Form.Caption поместить текст с правой и левой стороны? Найти похожие ветки
← →
nick_mas © (2004-07-30 00:42) [0]Привет всем! Столкнулся с таким вопросом: Как разместить в Form1.Caption текст слева и справа одновременно, например text1 - слева, а text2 - справа?
← →
Sanek_metaller © (2004-07-30 01:07) [1]Используй пробел
← →
nick_mas © (2004-07-30 01:19) [2]А если в процессе работы программы этот текст будет изменяться, т.е. длина текстов в заголовке будет изменяться, значит ты предлагаешь пересчитывать при разных ситуациях разное количество пробелов!?
А есть ли другой способ? Вот именно text1 выравнивается по левому краю, а text2 - именно по правому краю?
← →
KADAN © (2004-07-30 04:02) [3]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure Edit1Change(Sender: TObject);
private
procedure SetFormRightCaption(s: string);
procedure WMNCPaint(var Msg: TWmNcPaint); message WM_NCPaint;
procedure WMNCActivate(var msg: TwmncActivate); message WM_NCActivate;
procedure WMSize(var msg:TMessage); message WM_SIZE;
public
end;
var
Form1: TForm1;
CapColor:Cardinal;
cap:string;
rc:TRect;
implementation
{$R *.DFM}
procedure TForm1.WmNcPaint(var Msg: TWmNcPaint);
var
WDc: HDc;
begin
inherited;
WDc := GetWindowDc(Handle);
SetBkMode( WDC, TRANSPARENT );
SetTextColor(WDC, CapColor);
DrawText(wDC, pchar(cap), -1, rc, DT_RIGHT);
ReleaseDc(Handle,WDC);
end;
procedure TForm1.WMNcActivate(var msg: TwmncActivate);
begin
inherited;
if msg.Active then
CapColor:= GetSysColor(COLOR_CAPTIONTEXT)
else
CapColor:= GetSysColor(COLOR_INACTIVECAPTIONTEXT);
SetFormRightCaption(cap);
end;
procedure TForm1.WMSize(var msg: TMessage);
begin
rc.Left := GetSystemMetrics( SM_CXSIZE ) +
GetSystemMetrics( SM_CXBORDER ) +
GetSystemMetrics( SM_CXFRAME );
rc.Top := GetSystemMetrics( SM_CYFRAME );
rc.right := width - rc.Left -
2*GetSystemMetrics( SM_CXSIZE )-
GetSystemMetrics( SM_CXFRAME );
rc.bottom := GetSystemMetrics( SM_CYSIZE );
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
SetFormRightCaption(edit1.Text);
end;
procedure TForm1.SetFormRightCaption(s: string);
begin
cap:=edit1.text;
SendMessage(handle, WM_NCPAINT,CreateRectRgn(left+rc.Left, top+rc.Top,left+rc.Right,top+rc.Bottom),0);
end;
end.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c