AGB  ·  Datenschutz  ·  Impressum  







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

Edit leert sich bei Enter

Ein Thema von Helmi · begonnen am 12. Jan 2013 · letzter Beitrag vom 13. Jan 2013
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

Edit leert sich bei Enter

  Alt 12. Jan 2013, 13:40
Hallo,

ich weiss momentan nicht mehr weiter.

Ich hab eine Komponente von TLabeledEdit abgeleitet, hab der noch ein 2. Label (PostLabel) verpasst und im Edit einen Button.
(heisst TAlignLabeledButtonEdit)

Es funktioniert auch tadellos - nur ein Problem hab ich:
Wenn ich im Edit einen Text eingebe und die Enter-Taste drücke, dann wird das Edit geleert.
Bei einem normalen TLabeledEdit passiert das nicht - also muss es durch meinen Code erfolgen.
Leider finde ich keine Stelle wo das (direkt) passiert.
Debuggen kann ich es leider nicht, weil mir der Ansatz dafür fehlt (weiss gar nicht wo ich ansetzen sollte).

Der Button ist ein SpeedButton - daher kann dieser nicht den Fokus erhalten und ich sehe ihn auch nicht als das Problem an (hab ihn auch mal komplett rauskommentiert - das Problem besteht weiterhin)

Anbei mal die Unit - vielleicht findet jemand das Problem...
Angehängte Dateien
Dateityp: pas AlignLabeledButtonEdit.pas (15,5 KB, 14x aufgerufen)
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  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: Edit leert sich bei Enter

  Alt 12. Jan 2013, 13:56
Ich wollte nichts installieren und habe deshalb so getestet, aber keine Probleme feststellen können....

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
 i:Integer;
begin
  for I := 0 to 3 do

  with TAlignLabeledButtonEdit.Create(self) do
    begin
      Top := i*20;
      parent := self;
      OnButtonClick := Label1Click;
    end;
end;

procedure TForm1.Label1Click(Sender: TObject);
begin
  Showmessage(TAlignLabeledButtonEdit(Sender).Text)
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
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Edit leert sich bei Enter

  Alt 12. Jan 2013, 14:04
Ich wollte nichts installieren und habe deshalb so getestet, aber keine Probleme feststellen können....
Danke fürs Testen...

Ich habe deinen Test genau so nachvollzogen.
Wenn ich in einem Edit etwas eingebe, und die Entertaste drücke (nicht den Button) wird der Inhalt vom Edit gelöscht.
Klick ich danach auf den Button, wird der vorher eingegebene Text im Label angezeigt.
Anscheinend wird nur optisch der Text geleert - aber nicht in der Variablen intern

[Edit]
Ich hab das mal in ein Beispiel-Projekt gepackt
Angehängte Dateien
Dateityp: zip Project2.zip (633,0 KB, 5x aufgerufen)
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<

Geändert von Helmi (12. Jan 2013 um 15:11 Uhr)
  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: Edit leert sich bei Enter

  Alt 12. Jan 2013, 16:50
es wird nicht leer, sondern es bricht um... mit Pfeil auf/ab kannst Du scrollen.

wenn Du das nicht willst, musst Du Deine CreateParams ändern.

Delphi-Quellcode:
procedure TAlignLabeledButtonEdit.CreateParams(var params: TCreateParams);
const
  Alignments: array[TAlignment] of Word = (DT_LEFT, DT_RIGHT, DT_CENTER);
begin
  // Geerbte Parameter setzen
  params.Style := (params.Style or Alignments[FAlignment] or WS_CLIPCHILDREN) and not ES_MULTILINE;
  inherited CreateParams(params);
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)

Geändert von Bummi (12. Jan 2013 um 16:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Edit leert sich bei Enter

  Alt 12. Jan 2013, 17:18
es wird nicht leer, sondern es bricht um... mit Pfeil auf/ab kannst Du scrollen.

wenn Du das nicht willst, musst Du Deine CreateParams ändern.
Mist - ich könnt mich grad in A... beissen, weil ich da nicht selbst drauf gekommen bin
Danke für die Hilfe!

[EDIT]
Jetzt weiss ich auch woher das ES_MULTILINE kam:
Ich hab mir das mit dem Button einfügen in ein Edit von SpinEdit abgeschaut und dort ist ES_MULTILINE auch aktiv
so wie es ausschaut muss es auch aktiv bleiben, da es ohne nicht geht (also Button in Edit).

Wenn man sich aber dann das KeyPress intern vom SpinEdit anschaut, dann werden dort bestimmte Tasten "verschluckt"


Habs jetzt so gelöst:
Delphi-Quellcode:
procedure TAlignLabeledButtonEdit.KeyPress(var Key: Char);
begin
  If Key = #13 then
    Key := #0
  else
    inherited KeyPress(Key);
end;

procedure TAlignLabeledButtonEdit.CreateParams(var params: TCreateParams);
const
  Alignments: array[TAlignment] of Word = (DT_LEFT, DT_RIGHT, DT_CENTER);

begin
  inherited CreateParams(params);

  // Geerbte Parameter setzen
  params.Style := params.Style or Alignments[FAlignment] or ES_MULTILINE or
                  WS_CLIPCHILDREN;;
end;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<

Geändert von Helmi (12. Jan 2013 um 17:40 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#6

AW: Edit leert sich bei Enter

  Alt 13. Jan 2013, 12:58
Mittels meiner Änderung:
Delphi-Quellcode:
procedure TAlignLabeledButtonEdit.KeyPress(var Key: Char);
begin
   If Key = #13 then
     Key := #0
   else
     inherited KeyPress(Key);
end;
kann ich natürlich die Entertaste nicht mehr im OnKeyPress abfragen.
Gibts trotzdem ne Möglichkeit das ggf. zu Nutzen?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#7

AW: Edit leert sich bei Enter

  Alt 13. Jan 2013, 13:29
Hallo,

vielleich hilft Dir folgendes:
Delphi-Quellcode:
procedure TAlignLabeledButtonEdit.KeyPress(var Key: Char);
begin
  inherited KeyPress(Key);
  if Key = #13 then
    Key := #0
end;
Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#8

AW: Edit leert sich bei Enter

  Alt 13. Jan 2013, 13:42
Hallo,

vielleich hilft Dir folgendes:
Delphi-Quellcode:
procedure TAlignLabeledButtonEdit.KeyPress(var Key: Char);
begin
  inherited KeyPress(Key);
  if Key = #13 then
    Key := #0
end;
Gruß
Wenn alles so einfach wär
Danke - so funktionierts
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#9

AW: Edit leert sich bei Enter

  Alt 13. Jan 2013, 15:44
Hallo,

ist gerade aufgefallen: Deine Komponente lässt das Pasten mehrzeiligen Texts zu. Wenn Du ein Return abfängst, dann vermute ich mal, dass Du an Deiner WMPaste noch ein bisserl schleifen musst.

Gruss
Volker Zeller
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#10

AW: Edit leert sich bei Enter

  Alt 13. Jan 2013, 19:56
ist gerade aufgefallen: Deine Komponente lässt das Pasten mehrzeiligen Texts zu. Wenn Du ein Return abfängst, dann vermute ich mal, dass Du an Deiner WMPaste noch ein bisserl schleifen musst.
Theoretisch ja - aber das lass ich jetzt mal unter den Tisch fallen (ich sollte da drunter mal wieder aufräumen)
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:10 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