problemas com HINT .. como resolver?

Delphi

24/01/2004

alguem sabe como resolver problemas com hint do tipo

eu quero por um hint com o caracter ´ | ´ (#124) ... e talz ...

mas nao funciona .... alguem tem ideia de como fazer isso funcionar corretamente ... valeuz ..

[]s :wink:


Salsa

Salsa

Curtidas 0

Respostas

Carlosrm

Carlosrm

24/01/2004

salsa,

vc está querendo exibir um hint em mais de uma linha, é isso ?

carlosrm


GOSTEI 0
Salsa

Salsa

24/01/2004

nao .. eu quero exibir o caracter ´|´ (#124)
no hint ... mais nao consigo por causa q ele usa a barra pra algo ...


queria saber se alguem conhece algum jeito de fazer isso!


GOSTEI 0
Wolverine

Wolverine

24/01/2004

:lol:
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
StatusBar1.Panels[0].Text:=´|OK|´
end;


GOSTEI 0
Cebikyn

Cebikyn

24/01/2004

Essa barra, é usada para separ o hint curto do longo. O hint curto é aquele que aparece qnd vc deixa o mouse por cima do componente, o longo é o que aparece no StatusBar (se não há barra, ambos são iguais). Logo, este caractere só pode ser mostrado no hint longo.


GOSTEI 0
Salsa

Salsa

24/01/2004

:lol: procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin StatusBar1.Panels[0].Text:=´|OK|´ end;



nao entendi oq a status bar tem a ver com mostrar o hint com a | (barra)

c vc adicionar hum hint assim num botao: |_aaaa_|

ele nao aparece


GOSTEI 0
Salsa

Salsa

24/01/2004

Essa barra, é usada para separ o hint curto do longo. O hint curto é aquele que aparece qnd vc deixa o mouse por cima do componente, o longo é o que aparece no StatusBar (se não há barra, ambos são iguais). Logo, este caractere só pode ser mostrado no hint longo.



entao nao tem como mostrar um hint em um botao assim ´ |_aaa_| ?


GOSTEI 0
Carlosrm

Carlosrm

24/01/2004

salsa,

se essa opção ajudar, ótimo. Se não, faz de conta que eu não postei nada.

troque o código ascii para 166. Em vez de uma barra vertical, aparecerão duas semi-barras verticais, uma em cima da outra, semelhante ao sinal de dois pontos.

button3.Hint := #166+´_aaa_´+166;

carlosrm


GOSTEI 0
Salsa

Salsa

24/01/2004

po cara valeuz ... masss nao tem jeito ... eu preciso colocar a barra no hint ... mass valeuz pela atençao ae! :wink:


GOSTEI 0
Beppe

Beppe

24/01/2004

Pode-se criar um descendente de THintWindow que faça isso. O THintWindow normal pega a mensagem a ser exibida com GetShortHint, então é só usar o hint inteiro.


GOSTEI 0
Beppe

Beppe

24/01/2004

Achei uma solução menos problemática. Só coloque um TApplicationEvents no form, crie um manipulador para o OnShowHint:

function GetHint(Control: TControl): String;
begin
  while Control <> nil do
  begin
    Result := Control.Hint;
    if Result = ´´ then
      Control := Control.Parent
    else
     Exit;
  end;
  Result := ´´;
end;

procedure TForm1.ApplicationEvents1ShowHint(var HintStr: String;
  var CanShow: Boolean; var HintInfo: THintInfo);
begin
  HintStr := GetHint(HintInfo.HintControl);
end;



GOSTEI 0
Wolverine

Wolverine

24/01/2004

ñ, ñ aparece, coloque no hint | e ñ apareceu no status bar status bar, porem depois q eu fiz isso
StatusBar1.Panels[0].Text:= ´|´
ele aparaceu

[quote:24440ab817=´Wolverine´]:lol: procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin StatusBar1.Panels[0].Text:=´|OK|´ end;



nao entendi oq a status bar tem a ver com mostrar o hint com a | (barra)

c vc adicionar hum hint assim num botao: |_aaaa_|

ele nao aparece[/quote:24440ab817]


GOSTEI 0
Wolverine

Wolverine

24/01/2004

Isso foi retirado das 800 dias do Delphi

316 - Criando uma barra de status
Para criar uma barra de status realmente útil, primeiramente coloque um componente TStatusBar (que está na paleta Win32) no seu form (vou explicar completo porque vários programadores não o conhecem e usam Panels para isso). Clique com o botão direito no StatusBar1 e escolha Panels Editor. Clique Add e pronto (se quiser colocar mais divisões - para colocar um relógio, por exemplo, é só clicar Add mais vezes).

Apesar de muitos colocarem mensagens em StatusBars no evento OnMouseMove dos componentes, o melhor modo que eu conheço para isso é usando Hints. Primeiramente altere a propriedade ShowHint para True. Depois digite o que vai aparecer no seguinte formato:

Texto que vai aparecer junto ao mouse|Texto que vai aparecer no StatusBar (onde | é Shift + \).

Nota:

* No texto que aparecer junto ao mouse, coloque uma frase pequena (ex: Imprimir). No texto que vai aparecer no StatusBar, coloque um texto mais explicativo (ex: Imprimir o relatório de vendas do mês atual).

[b:a57037cf41]* Caso você queira que não apareça nenhum texto junto ao mouse (ou seja, só no StatusBar), cuide para que o primeiro caracter de Hint seja o caracter ´|´ (sem aspas). [/b:a57037cf41]
No evento OnCreate do form, coloque o seguinte comando:

Application.OnHint := ShowHint;
Crie uma procedure na seção private do form a procedure ShowHint. Na seção implementation, coloque:

procedure TForm1.ShowHint(Sender: TObject);
begin
StatusBar1.Panels[0].Text := GetLongHint (Application.Hint);
end;
E pronto.


GOSTEI 0
Salsa

Salsa

24/01/2004

Achei uma solução menos problemática. Só coloque um TApplicationEvents no form, crie um manipulador para o OnShowHint:
function GetHint(Control: TControl): String;
begin
  while Control <> nil do
  begin
    Result := Control.Hint;
    if Result = ´´ then
      Control := Control.Parent
    else
     Exit;
  end;
  Result := ´´;
end;

procedure TForm1.ApplicationEvents1ShowHint(var HintStr: String;
  var CanShow: Boolean; var HintInfo: THintInfo);
begin
  HintStr := GetHint(HintInfo.HintControl);
end;


mto obrigado ... a sua soluçao foi perfeita .... []s :D


GOSTEI 0
POSTAR