AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Memo mit Inaktiv-Text

Ein Thema von Dennis07 · begonnen am 19. Apr 2013 · letzter Beitrag vom 19. Apr 2013
Antwort Antwort
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
482 Beiträge
 
Delphi 11 Alexandria
 
#1

Memo mit Inaktiv-Text

  Alt 19. Apr 2013, 15:52
Hallo,
ich bräuchte mal wieder eure Hilfe, wäre echt Klasse wenn ihr mir diesmal wieder bei einem Problem helfen könntet.

Also: Ich habe in einem Fenster eine TMemo-Box.
In diese sollen Chatnachrichten eingegeben werden. Wenn die TMemo nicht aktiv ist (also keinen Fokus hat), dann soll dort ein kursiver Standarttext in grau sichtbar sein. Sobald die Memo wieder aktiv ist, soll dieser entfernt werden und die Schrift wieder normal sein.

Folgendes habe ich deshalb benutzt:

Ich habe das ganze über die globale Bool-Variable EmptyEditField gemacht.
Delphi-Quellcode:
  public
    EmptyEditField: Boolean; //Eingabefeld leer?
Diese wird beim Programmstart auf True gesetzt.
Delphi-Quellcode:
procedure TfmChat.FormCreate(Sender: TObject);
begin
  EmptyEditField := True;
  edChat.SetFocus;
Wenn das Memo verlassen wird ,die Variable auf False ist, das Memo leer ist und das Memo nicht aktiv ist, werden die Änderungen vorgenommen.
Wenn das Memo aktiviert wird (den Fokus erhält), wenn die Variable auf True ist und wenn das Memo aktiv ist, werden die Änderungen Rückgängig gemacht.
Delphi-Quellcode:
procedure TfmChat.edChatExit(Sender: TObject);
begin
  if (Length(edChat.Text) < 1) and (EmptyEditField = False) and (fmChat.ActiveControl <> edChat) then
  begin
    edChat.Font.Style := [fsItalic];
    edChat.Font.Color := clGray;
    edChat.Text := 'Nachrichtentext hier eingeben';
    EmptyEditField := True;
  end;
end;

procedure TfmChat.edChatEnter(Sender: TObject);
begin
  edChat.Font.Style := [];
  edChat.Font.Color := fmFontColor.cbFont.Selected;
  edChat.Clear;
  EmptyEditField := False;
end;
So weit so gut, nur funktioniert das ganze (leider) nur beim zweiten Verlassen des Memos. Beim ersten Verlassen bleibt das Memo leer und es erscheint kein "Standarttext", auch wenn das Memo nicht mehr aktiv ist.
Wenn ich beim OnExit die letzt Bedingung mit dem ActiveControl weglasse, dann erscheint die Änderung zwar schon beim ersten Verlassen, allerdings ist dieser dann auch beim aktivierten Memo zu Anfangs sichtbar, und das soll ja auch nicht sein.

Wäre echt super, wenn ihr mir helfen könntet.
Danke; Dennis
Dennis
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Memo mit Inaktiv-Text

  Alt 19. Apr 2013, 17:04
Ich bin nicht sicher ob ich Dich richtig verstanden habe ... (Memo hat in diesem Beispiel den Tag 4711)
Inhalt wird nicht verändert ...

Delphi-Quellcode:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type

  TMemo = class(StdCtrls.TMemo)
  protected
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
  end;

  TForm3 = class(TForm)
    Memo1: TMemo;
    Edit1: TEdit;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}
{ TMemo }

procedure TMemo.WMPaint(var Message: TWMPaint);
var
  CC: TControlCanvas;
  r: TRect;
begin
  inherited;
  if not focused and (Tag = 4711) then
  begin
    CC := TControlCanvas.Create;
    try
      CC.Control := self;
      CC.Brush.Color := Color;
      r := ClientRect;
      InflateRect(r, 3, 3);
      CC.FillRect(r);
      CC.Font.Color := clSilver;
      CC.Font.Style := [fsItalic];
      CC.TextOut(5, 5, 'Nachrichtentext hier eingeben');
    finally
      CC.Free;
    end;
  end;
end;

end.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
482 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Memo mit Inaktiv-Text

  Alt 19. Apr 2013, 21:51
Echt vielen Dank, hat geholfen!
Das war genau, worauf ich gehofft hatte.

MFG
Dennis
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Memo mit Inaktiv-Text

  Alt 19. Apr 2013, 23:02
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 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