Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1091437040
Марат
2004-08-02 12:57
2004.08.15
Time


14-1090925172
Vovchik_A
2004-07-27 14:46
2004.08.15
Кстати, об отдыхе...


14-1090571202
Ig
2004-07-23 12:26
2004.08.15
Как перезапустить службу удаленного вызова процедур (RPC).


1-1091299753
Виталий
2004-07-31 22:49
2004.08.15
Написание кода


14-1090860633
Art_Z
2004-07-26 20:50
2004.08.15
Два аргумента за Unix





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский