Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.15;
Скачать: CL | DM;

Вниз

Как в 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.044 c
14-1091273626
Cheater
2004-07-31 15:33
2004.08.15
Дрянь какая-то случилось с IE! Помогите!


3-1090325619
ksa2002
2004-07-20 16:13
2004.08.15
Проблема с диалектом (DATE)


1-1091020002
AlexXn
2004-07-28 17:06
2004.08.15
Зеркальное отображение картинки


14-1091178545
}|{yk
2004-07-30 13:09
2004.08.15
Delphi Informant Magazine Readers Choice Awards 2004


14-1090506216
DDDeN
2004-07-22 18:23
2004.08.15
Рекурсивный поиск в Win 2k