Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi | im Hint anzeigen (https://www.delphipraxis.net/137883-%7C-im-hint-anzeigen.html)

himitsu 30. Jul 2009 12:23


| im Hint anzeigen
 
Zitat:

Durch die Angabe von zwei Werten, die durch das Zeichen | voneinander getrennt sind, kann ein Kurzhinweis definiert werden, der sowohl vom Hilfetextfeld als auch von einer Ereignisbehandlungsroutine für OnHint verwendet wird. Beispiel:
Delphi-Quellcode:
Edit1.Hint := 'Name|Geben Sie den Namen in das Eingabefeld ein';

Ja also dieses Verhalten bereitet mir gerade Probleme, denn ich möchte/müßte im Hint gerade dieses Zeichen anzeigen,
aber leider schneidet Delphi ab Diesem den Text ja nun ab ... gibt es da überhaupt einen Weg dieses dennoch anzeigen zu lassen?

[add] ich dachte erst mein mehrzeiliger Hinttext sei zu lang :?

Bernhard Geyer 30. Jul 2009 12:26

Re: | im Hint anzeigen
 
Evtl. eigene Implementierung des Hintfensters verwenden? Das ElPack von LMD hat sowas (um Unicode auch vor D2009 un HTML im Hint zu unterstützen)

himitsu 30. Jul 2009 12:37

Re: | im Hint anzeigen
 
Ich hatte mir grad mal TCustomHint.ShowHint(Control: TControl); angesehn und dieses läßt sich leider nicht überschreiben. Ja und gerade diese Funktion wird ja durch die VCL aufgerufen,
also selbst wenn ich da eine andere Hint-Klasse registriere, komm ich nicht an den kompletten Hint-Text ran :cry:

function GetShortHint(const Hint: string): string; aus der Unit Controls könnte ich noch versuchen irgendwie zu ersetzen.
(ich glaub da gab's doch sowas mit Hooks, aber ob das hier geht, weiß ich grad nicht ... muß mal suchen, wo hier der Thread zu sowas nochmal war)

Alternativ wären noch 2 Möglichkeiten übrig:
  • ein anderes Zeichen in der Eingabe verwenden und dieses dann durch | ersetzen,
    aber es handelt sich um die Eingabe einer Maske (Dateiname), wo mehrere Masken möglich sind ... getrennt durch |, wie es ja an vielen Stellen üblich ist und da jetzt ein anderes Zeichen zu nutzen, nur weil der Hint "spinnt" ... :evil:
  • ein anderes Zeichen anzeigen, welches aber genauso aussieht ... via Unicode gibt's da mehrere Möglichkeiten, aber ob auf dem Zielrechner dieses Zeichen dann auch angezeigt werden kann, ist fraglich.

jfheins 30. Jul 2009 12:57

Re: | im Hint anzeigen
 
Evtl. so wie bei && > & und '' > ' einfach verdoppeln?

Also Sowas:
Zitat:

Hallo || Welt
N Versuch wärs wert :stupid:

himitsu 30. Jul 2009 13:07

Re: | im Hint anzeigen
 
||, \| und Co. ... so schlau war ich auch schon, aber selbst nach näherem Hinsehn, gibt's da keine Maskierung :?

Delphi-Quellcode:
function GetShortHint(const Hint: string): string;
var
  I: Integer;
begin
  I := AnsiPos('|', Hint);
  if I = 0 then
    Result := Hint else
    Result := Copy(Hint, 1, I - 1);
end;
und
Delphi-Quellcode:
procedure TCustomHint.ShowHint(Control: TControl);
var
  Pos: TPoint;
  Index: Integer;
begin
  if Control.Hint = '' then
    Exit;

  Index := AnsiPos('|', Control.Hint); //Do Not Localize

  Title := GetShortHint(Control.Hint);
  if Index <> 0 then
    Description := GetLongHint(Control.Hint)
  else
    Description := '';
...
ich wollte doch nur im Hint angeben, was es für Möglichkeiten bei der Maske gibt :cry:

also im LongHint wäre ein | möglich, da ja nur das Erste ausgewertet wird, aber im Hint angezeigt wird ja nur der ShortHint.

Matze 30. Jul 2009 13:12

Re: | im Hint anzeigen
 
Kann man sowas vielleicht mit dem ASCII-Zeichensatz hinbekommen?

Delphi-Quellcode:
Edit1.Hint := 'Name' + #124 + 'Geben Sie den Namen in das Eingabefeld ein';
Ungetestet und geraten. Evtl. ist es völliger Blödsinn.

Grüße, Matze

TeronG 30. Jul 2009 13:51

Re: | im Hint anzeigen
 
Ich habe mal irgend wo (swissdelphicenter!?) ShowBalloonTip gefunden.
Das "überschreibt" die normalen Hints und zeigt auch '|' im Hilfetext an.

Evtl. kannste das ja an deine Wünsche anpassen oder dich davon inspirieren lassen. ^^ (oder 1:1 verwenden ^^)


Delphi-Quellcode:
procedure ShowBalloonTip(Control: TWinControl; Icon: integer;        // benötigt 'Commctrl' (uses)
                        Title: pchar; Text: PWideChar; BackCL, TextCL: TColor);


{ShowBalloonTip(Button1, 1, 'Title', 'Balloontiptext', clBlue, clNavy);}
procedure ShowBalloonTip(Control: TWinControl; Icon: integer; Title: pchar; Text: PWideChar; BackCL, TextCL: TColor);
const
  TOOLTIPS_CLASS = 'tooltips_class32';
  TTS_ALWAYSTIP = $01;
  TTS_NOPREFIX = $02;
  TTS_BALLOON = $40;
  TTF_SUBCLASS = $0010;
  TTF_TRANSPARENT = $0100;
  TTF_CENTERTIP = $0002;
  TTM_ADDTOOL = $0400 + 50;
  TTM_SETTITLE = (WM_USER + 32);
  ICC_WIN95_CLASSES = $000000FF;
type
  TOOLINFO = packed record
    cbSize: Integer;
    uFlags: Integer;
    hwnd: THandle;
    uId: Integer;
    rect: TRect;
    hinst: THandle;
    lpszText: PWideChar;
    lParam: Integer;
  end;
var
  hWndTip: THandle;
  ti: TOOLINFO;
  hWnd: THandle;
begin
  hWnd   := Control.Handle;
  hWndTip := CreateWindow(TOOLTIPS_CLASS, nil,
    WS_POPUP or TTS_NOPREFIX or TTS_BALLOON or TTS_ALWAYSTIP,
    0, 0, 0, 0, hWnd, 0, HInstance, nil);
  if hWndTip <> 0 then
  begin
    SetWindowPos(hWndTip, HWND_TOPMOST, 0, 0, 0, 0,
      SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
    ti.cbSize := SizeOf(ti);
    ti.uFlags := TTF_CENTERTIP or TTF_TRANSPARENT or TTF_SUBCLASS;
    ti.hwnd := hWnd;
    ti.lpszText := Text;
    Windows.GetClientRect(hWnd, ti.rect);
    SendMessage(hWndTip, TTM_SETTIPBKCOLOR, BackCL, 0);
    SendMessage(hWndTip, TTM_SETTIPTEXTCOLOR, TextCL, 0);
    SendMessage(hWndTip, TTM_ADDTOOL, 1, Integer(@ti));
    SendMessage(hWndTip, TTM_SETTITLE, Icon mod 4, Integer(Title));
  end;
end;
EDIT: ups ... zu viel kopiert ^^

mirage228 30. Jul 2009 13:52

Re: | im Hint anzeigen
 
Du könntest ja einfach "Hint >> Bla bla" nehmen und beim Zeichnen dann >> durch | ersetzen. Das Zeichen lässt sich ja mittels HintWindow-Klassen personalisieren...

Viele Grüße

TeronG 30. Jul 2009 13:53

Re: | im Hint anzeigen
 
Zitat:

Zitat von Matze
Kann man sowas vielleicht mit dem ASCII-Zeichensatz hinbekommen? ... Ungetestet und geraten ..

nope geht leider net. (grade mal schnell getestet ^^)
Zitat:

Zitat von himitsu
ich wollte doch nur im Hint angeben, was es für Möglichkeiten bei der Maske gibt :cry:

Dann schreib den Trivialnamen ... wenn man den nicht kennt, so wie ich, kann man ihn ja immer noch googeln. ^^

himitsu 30. Jul 2009 14:19

Re: | im Hint anzeigen
 
Zitat:

Zitat von TeronG
Zitat:

Zitat von Matze
Kann man sowas vielleicht mit dem ASCII-Zeichensatz hinbekommen? ... Ungetestet und geraten ..

nope geht leider net. (grade mal schnell getestet ^^)

es ist ja auch klar warum ... im String ist es ja so oder so dieses "böse" Zeichen :zwinker:

Zitat:

Zitat von TeronG
Dann schreib den Trivialnamen ... wenn man den nicht kennt, so wie ich, kann man ihn ja immer noch googeln. ^^

toll, den weiß ich jetzt auch nicht :oops: ... nur nach was soll ich da suchen?
google
Es wurden keine mit Ihrer Suchanfrage - | - übereinstimmenden Dokumente gefunden.

Vorschläge:

* Probieren Sie andere Suchbegriffe.

also bis jetzt hatte ich es noch nie geschaft, daß mir google absolut nix liefert ... is also 'ne Premiere für mich ... sonst kommt ja wenigstens noch sowas
google
Meinten Sie: .....

Es wurden keine Standard-Webseiten gefunden, in denen alle eingegebenen Suchbegriffe vorkommen.

Es wurden keine mit Ihrer Suchanfrage - ..... - übereinstimmenden Dokumente gefunden.

Vorschläge:

* Vergewissern Sie sich, dass alle Wörter richtig geschrieben sind.
* Probieren Sie andere Suchbegriffe.
* Probieren Sie allgemeinere Suchbegriffe.


Also das mit dem BalloonTip wäre eine Möglichkeit und sieht bestimmt nicht schlecht aus.
Nur selbst einblenden ... hab grad keine Ahnung wie ich das machen sollte (also auf welches Ereignis hin),
aber ich denk da läßt sich was machen, wenn ich im HintText das Zeichen Kodiere und dann beim Anzeigen umwandel ...

aber so oder so (andere Hintklasse oder ToolTip) ich werd wohl etwas "eigenes" registrieren müssen :?
(also eine Maskierungsmöglichkeit für das | im HintText, seitens Delphi, wäre schon besser gewesen :evil: )


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz