Centralizar Caption do Form

Delphi

19/03/2008

Alguém conhece alguma funçao para centralizar o caption do form?

Obrigado.


Armindo

Armindo

Curtidas 0

Respostas

Marco Salles

Marco Salles

19/03/2008

ola Armindo . Tudo bem

Alguém conhece alguma funçao para centralizar o caption do form?


Função para isto acho dificil ... Torço para que alguem conheça !!

Porém vc pode manipular as mensagens do Windows e desenhar um Rect
centralizado . Sugerindo que este caption esteja no Meio .


GOSTEI 0
Armindo

Armindo

19/03/2008

[quote:bdd945f299=´Marco Salles´]ola Armindo . Tudo bem

Alguém conhece alguma funçao para centralizar o caption do form?


Função para isto acho dificil ... Torço para que alguem conheça !!

Porém vc pode manipular as mensagens do Windows e desenhar um Rect
centralizado . Sugerindo que este caption esteja no Meio .[/quote:bdd945f299]

E tem como você me ajudar com a sugestão?
Obrigado.


GOSTEI 0
Massuda

Massuda

19/03/2008

Nesta página do torry.net tem componentes que alteram de alguma forma o título do form...

:arrow: http://www.torry.net/pages.php?id=95

...talvez algum deles faça o que você deseja.

De qualquer forma, como a maioria tem código fonte, no pior dos casos você pode usar como base para algum componente que faça o que você quer.


GOSTEI 0
Adriano Santos

Adriano Santos

19/03/2008

Cara,

É um gato daqueles bem gato mesmo. Usei uma função que adiciona espaços a esquerda e a direita para centralizar. É a famosa PadC. Funciona, mas é obvio: uma ***** gato. Heheheh

[quote:ef356e17ce=´Crie uma função assim´]
function TForm1.PadC(sTexto: string; iTamanho: Integer): string;
var
  iContador                   : Integer;
  iPosicao                    : Integer;
begin
  Result := sTexto;
  iPosicao := Trunc((iTamanho - Length(Result)) / 2);
  for iContador := 1 to iPosicao do
    Result := ´ ´ + Result;
  iPosicao := (iTamanho - Length(Result));
  for iContador := 1 to iPosicao do
    Result := Result + ´ ´;
end;

[/quote:ef356e17ce]

[quote:ef356e17ce=´Use no botão assim´]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form1.Caption := PadC(´Caption do meu Form´, 120);
end;

[/quote:ef356e17ce]


GOSTEI 0
Marco Salles

Marco Salles

19/03/2008

Tentei fazer isto aqui ... caso alguem tenha mais tempo e queira simplificar acho que consegue

[b:8de2f6bb14]inclua uses ExtCtrls na secção Interface[/b:8de2f6bb14]

private
    { Private declarations }
     Temporizador:TTimer;
    procedure TemporizadorTimer(Sender: TObject);
    procedure Titulo(Titulo: Pchar);
    procedure Enviar(var Msg : TMessage); message Wm_user;
    procedure WMSysCommand(var Msg: TWMSysCommand); Message WM_SysCommand;


procedure TForm1.TemporizadorTimer(Sender: TObject);
begin
postmessage(handle,Wm_User,0,0);
end;

procedure TForm1.Titulo(Titulo: Pchar);
var
DC: THandle;
R1, R2: TRect;
begin
DC := GetWindowDC(Handle);
try
SetWindowText(Handle, nil);
GetWindowRect(Handle, R2);
R1.Left := GetSystemMetrics(SM_CXSIZE) +
GetSystemMetrics(SM_CXBORDER) +
GetSystemMetrics(SM_CXFRAME);
R1.Top := GetSystemMetrics(SM_CYFRAME)*2;
R1.Right := R2.Right - R2.Left - R1.Left - 2 *
GetSystemMetrics(SM_CXSIZE);
R1.Bottom := R1.Top + GetSystemMetrics(SM_CYSIZE);
SetBkColor(DC, GetSysColor(COLOR_ACTIVECAPTION));
SetTextColor(DC, GetSysColor(COLOR_CAPTIONTEXT));
DrawText(DC, Titulo, -1, R1, (DT_RIGHT or DT_VCENTER)div 2);
finally
ReleaseDC(Handle, DC);
end;
end;

procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
   case (Msg.CmdType) of
   SC_MINIMIZE:
       begin
         Temporizador:=TTimer.Create(self);
         Temporizador.OnTimer:=TemporizadorTimer;
         Temporizador.Enabled:=True;
       end;
  end;
 Inherited;
end;


procedure TForm1.Enviar(var Msg: TMessage);
begin
 titulo(pchar(´NomeQueVoceQuerDar´));
end;


//nos evento onResize e onpaint do form escreva os métodos abaixo

procedure TForm1.FormResize(Sender: TObject);
begin
 if Temporizador <> Nil Then
    FreeandNil(temporizador);
  postmessage(handle,Wm_User,0,0);
end;


procedure TForm1.FormPaint(Sender: TObject);
begin
titulo(pchar(´NomeQueVoceQuerDar´));
end;


GOSTEI 0
Marco Salles

Marco Salles

19/03/2008

Testei ate sua função meu caro ilustre colunistas da Clube Delphi Adriano santos , pq para mim se é gato ou não , não importa . o importante é que ele mieeeeeeeeeee

so que o caption é centralizado , porém quando se Altera as dimensões , e clicando no botão , o caption do form não é centralizado .. Voce por acaso testou nestas condições :?: :?: :?:

p:s quero deixar claro que o termo usado :´[b:f0097b3532] meu caro ilustre colunistas da Clube Delphi Adriano santos [/b:f0097b3532]´ , não é pejorativo , mas sim , expressa a minha admiração pelo seu trabalho . OK


GOSTEI 0
POSTAR