Delphi-PRAXiS

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 Memo-Feld nach unten hin ausblenden (https://www.delphipraxis.net/186425-memo-feld-nach-unten-hin-ausblenden.html)

Der schöne Günther 2. Sep 2015 10:17

Memo-Feld nach unten hin ausblenden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Vorweg: VCL, nicht FireMonkey.

Der Benutzer kann, auf einem Kiosk-System, ein paar Zeilen eingeben. Ich möchte die ersten Zeilen als Vorschau anzeigen und beim Drauftippen soll er einen Dialog zum Eingeben bekommen. Es soll in etwa so aussehen:
Anhang 43817

Wie sollte man das am besten angehen?
  1. Ein transparentes TWinControl mit diesem Farbverlauf über ein Memo legen
  2. Den Text auf ein Bild rendern und einen Farbverlauf drübermalen
  3. Etwas anderes?

Ich freue mich über viele schlaue Ideen :-)

TiGü 2. Sep 2015 10:33

AW: Memo-Feld nach unten hin ausblenden
 
Ich würde 2. versuchen!

Der schöne Günther 2. Sep 2015 10:34

AW: Memo-Feld nach unten hin ausblenden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich glaube es war doch einfacher als gedacht, ich habe einfach den TeeChart zweckentfremdet :-D

So ungefähr:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
   gradient: TTeeGradient;
begin
   textRectangle.Free();
   gradientRectangle.Free();

   textRectangle := TRectangleTool.Create(Chart1);
   try
      textRectangle.ParentChart := Chart1;

      textRectangle.Text := Memo1.Lines.Text;
      textRectangle.Bounds := textRectangle.ParentChart.ClientRect;
      textRectangle.Shape.Transparency := 0;

      Chart1.Tools.Add(textRectangle);
   except
      textRectangle.Destroy(); raise;
   end;

   gradientRectangle := TRectangleTool.Create(Chart1);
   try
      gradientRectangle.ParentChart := Chart1;
      gradientRectangle.Bounds := gradientRectangle.ParentChart.ClientRect;

      gradient := gradientRectangle.Shape.Gradient;
      gradient.Direction := TGradientDirection.gdBottomTop;
      gradient.Colors.Clear();
      gradient.Colors.Add(0.0, TColors.White, 75);
      gradient.Colors.Add(100.0, TColors.White, 0);
      gradient.Visible := True;

      gradientRectangle.Shape.Transparency := 00;

      Chart1.Tools.Add(gradientRectangle);
   except
      gradientRectangle.Destroy(); raise;
   end;
end;

TiGü 2. Sep 2015 10:43

AW: Memo-Feld nach unten hin ausblenden
 
Manchmal geht's schneller als gedacht! :thumb:
Wann hast du dir eigentlich angewöhnt, Destroy anstatt Free aufzurufen?

Sir Rufo 2. Sep 2015 10:45

AW: Memo-Feld nach unten hin ausblenden
 
Zitat:

Zitat von TiGü (Beitrag 1314403)
Manchmal geht's schneller als gedacht! :thumb:
Wann hast du dir eigentlich angewöhnt, Destroy anstatt Free aufzurufen?

Oder diese kreative
Delphi-Quellcode:
try ... finally ... end
Ersetzung durch
Delphi-Quellcode:
try ... except ... raise; end
:mrgreen:

(Die vor allem nur dann greift, wenn es eine Exception gab)

Na gut, auf den zweiten Blick, kann man das schon so machen ... aber ob ich das so machen würde ...

Der schöne Günther 2. Sep 2015 10:53

AW: Memo-Feld nach unten hin ausblenden
 
Zitat:

Zitat von TiGü (Beitrag 1314403)
Destroy anstatt Free aufzurufen?

In dem Block (nach Konstruktor) ist es doch eindeutig dass die Referenz nicht
Delphi-Quellcode:
nil
sein kann, deshalb kann man sich das sparen.

Zitat:

Zitat von Sir Rufo (Beitrag 1314404)
Na gut, auf den zweiten Blick, kann man das schon so machen

Ich glaube eher das sollte man so machen, denn meine schönen Tools will ich doch im Normalfall gar nicht zerstören. Nur im Fehlerfall, denn wer Fehler macht wird gnadenlos zerstört.

Sir Rufo 2. Sep 2015 11:16

AW: Memo-Feld nach unten hin ausblenden
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1314406)
Zitat:

Zitat von Sir Rufo (Beitrag 1314404)
Na gut, auf den zweiten Blick, kann man das schon so machen

Ich glaube eher das sollte man so machen, denn meine schönen Tools will ich doch im Normalfall gar nicht zerstören. Nur im Fehlerfall, denn wer Fehler macht wird gnadenlos zerstört.

Nun ja, dann solltest du aber keine dangeling pointer hinterlassen ... sonst hast du immer noch die A-Karte ... ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 Uhr.

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