Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Edit1.Text Inhalt sperren ? (https://www.delphipraxis.net/98391-edit1-text-inhalt-sperren.html)

taktaky 26. Aug 2007 17:18


Edit1.Text Inhalt sperren ?
 
Hallo,

bis jetzt verwende ich den Inspector die Option Enabled. Aber mit dieser Option kann man den Inhalt nicht kopieren und der Feld wird deaktiviert.

So möchte ich nicht sondern der Inhalt soll gesperrt werden d.h. kopieren ja, ändern nein

so möchte ich den Feld von Edit1.Text haben.

Wie kann ich sowas machen?

Gruß

mkinzler 26. Aug 2007 17:23

Re: Edit1.Text Inhalt sperren ?
 
Einfach jede Änderung des Benutzers rückgängig machen.

Nils_13 26. Aug 2007 17:32

Re: Edit1.Text Inhalt sperren ?
 
Delphi-Quellcode:
ReadOnly := True;

Hansa 26. Aug 2007 17:39

Re: Edit1.Text Inhalt sperren ?
 
Knapper gehts nimmer. :mrgreen: Ich habe eine Form da ist das so ähnlich. Diese Form hat eine private Variable AltFeldWert. Im Edit.OnEnter wird der gesetzt. Bei mir gehts drum zu sehen, ob überhaupt was geändert wurde. Falls ja : Aktion durchführen (im Edit.OnExit). Bei dir müsste man lediglich den im OnEnter gespeicherten Wert im OnExit zurücksetzen.
Delphi-Quellcode:
Edit.Text := AltFeldWert;
Es reicht ein gemeinsames OnEnter für die gewünschten Edits. Jedes einzelne müsste allerdings sein eigenes OnExit besitzen. Alternative (aber nicht nötig) : jedes Edit erhält eine eigene Variable um den alten Wert zu speichern.

taktaky 26. Aug 2007 18:22

Re: Edit1.Text Inhalt sperren ?
 
Zitat:

Zitat von Nils_13
Delphi-Quellcode:
ReadOnly := True;

Hallo zusammen,

Danke!

Mit ReadOnly:=true ist die beste Lösung :thumb:

Gruß

Die Muhkuh 26. Aug 2007 18:25

Re: Edit1.Text Inhalt sperren ?
 
Zitat:

Zitat von Hansa
Knapper gehts nimmer. :mrgreen: Ich habe eine Form da ist das so ähnlich. Diese Form hat eine private Variable AltFeldWert. Im Edit.OnEnter wird der gesetzt. Bei mir gehts drum zu sehen, ob überhaupt was geändert wurde. Falls ja : Aktion durchführen (im Edit.OnExit). Bei dir müsste man lediglich den im OnEnter gespeicherten Wert im OnExit zurücksetzen.
Delphi-Quellcode:
Edit.Text := AltFeldWert;
Es reicht ein gemeinsames OnEnter für die gewünschten Edits. Jedes einzelne müsste allerdings sein eigenes OnExit besitzen. Alternative (aber nicht nötig) : jedes Edit erhält eine eigene Variable um den alten Wert zu speichern.

Hi Hansa,

warum braucht jedes Edit sein eigenes OnExit?

Delphi-Quellcode:
procedure OnExit(Sender: TObject);
begin
  (Sender as TEdit).Text := AltFeldWert;
end;

Hansa 26. Aug 2007 21:21

Re: Edit1.Text Inhalt sperren ?
 
Zitat:

Zitat von Die Muhkuh
..warum braucht jedes Edit sein eigenes OnExit?...

Weil bei mir DB dahinter hängt. Da muss schon das richtige Feld aktualisiert werden, oder die entsprechende SP aufgerufen werden. Der alte Feldwert alleine nützt da nichts. Der Fragesteller braucht allerdings tatsächlich nur ein OnExit.

taktaky 26. Aug 2007 21:25

Re: Edit1.Text Inhalt sperren ?
 
Hi

OnChange funktioniert besser aber am besten ReadOnly:= True :wink:

Gruß

Hansa 26. Aug 2007 21:40

Re: Edit1.Text Inhalt sperren ?
 
OnChance ? :shock: Wieso ist das besser ? Als was ? Das gilt jedenfalls mal nicht für ein DB-Programmm welches Änderungen durchführt. Bei ReadOnly sollte das OnChange sowieso nicht gehen. :mrgreen: Es wäre ein Unding die Datenbank mit jedem einzelnen geänderten Zeichen zu belästigen, obwohl das Feld letztendlich zum Schlusss nicht mal geändert wurde. Benutze du lieber die OnEnter/Onexit Methode, um das Edit-Feld notfalls einfach zurückzusetzen. Ich hingegen muss eben hingehen und nachgucken, ob eine Änderung an den Daten gemacht werden musss oder nicht. Deshalb wird der geänderte Wert auch benötigt, um eine Änderung durchzuführen. Also nicht irgendwas einfach rückgängig machen, sondern auch, um eine Änderung an der richtigen Stelle zu machen. Und genau deshalb reicht zwar ein OnEnter, aber nicht nur ein OnExit.

taktaky 27. Aug 2007 00:35

Re: Edit1.Text Inhalt sperren ?
 
Zitat:

Zitat von Hansa
OnChance ? :shock: Wieso ist das besser ? Als was ? Das gilt jedenfalls mal nicht für ein DB-Programmm welches Änderungen durchführt. Bei ReadOnly sollte das OnChange sowieso nicht gehen. :mrgreen: Es wäre ein Unding die Datenbank mit jedem einzelnen geänderten Zeichen zu belästigen, obwohl das Feld letztendlich zum Schlusss nicht mal geändert wurde. Benutze du lieber die OnEnter/Onexit Methode, um das Edit-Feld notfalls einfach zurückzusetzen. Ich hingegen muss eben hingehen und nachgucken, ob eine Änderung an den Daten gemacht werden musss oder nicht. Deshalb wird der geänderte Wert auch benötigt, um eine Änderung durchzuführen. Also nicht irgendwas einfach rückgängig machen, sondern auch, um eine Änderung an der richtigen Stelle zu machen. Und genau deshalb reicht zwar ein OnEnter, aber nicht nur ein OnExit.

Hi

der Feld wird automatisch bei Form1.OnCreate ausgefüllt werden (Windows Version)
Vielleicht deswegen hat es bei mir nicht geklappt.

Ich habe die Option ReadOnly:=true verwendet

Gruß

Hansa 27. Aug 2007 01:03

Re: Edit1.Text Inhalt sperren ?
 
Wenns mit ReadOnly so geht, wie gewünscht, dann sei doch froh. Dein Problem ist somit gelöst. Das heißt aber nicht, dass andere Hinweise für jemand anderes nicht was nützen könnten. Der Hinweis von der Kuh (ja, bist selber Schuld :mrgreen: ) war ja schon berechtigt, weil eben nichts geändert werden soll => 1 OnExit reicht, aber nur in diesem, deinem konkreten Fall. OnChange birgt grundsätzlich erhebliche Gefahren. Rest wurde bereits gesagt. :???:

taktaky 27. Aug 2007 11:24

Re: Edit1.Text Inhalt sperren ?
 
Zitat:

Zitat von Hansa
Wenns mit ReadOnly so geht, wie gewünscht, dann sei doch froh. Dein Problem ist somit gelöst. Das heißt aber nicht, dass andere Hinweise für jemand anderes nicht was nützen könnten. Der Hinweis von der Kuh (ja, bist selber Schuld :mrgreen: ) war ja schon berechtigt, weil eben nichts geändert werden soll => 1 OnExit reicht, aber nur in diesem, deinem konkreten Fall. OnChange birgt grundsätzlich erhebliche Gefahren. Rest wurde bereits gesagt. :???:

Hi

von einer Seite du hast recht: Es reicht nicht nur OnChange, nun habe ich ich den Befehl
einmal Onchange und einmal bei Form OnCreate oder OnShow und damit ist kein Gefahr mehr :thumb:

Oder gibt es noch immer noch Gefahr :(

Gruß

Hansa 27. Aug 2007 20:51

Re: Edit1.Text Inhalt sperren ?
 
Zitat:

Zitat von taktaky
...Oder gibt es noch immer noch Gefahr :( ...

ReadOnly lässt kein Change zu. Somit geht wohl auch kein OnChange. Eine Gefahr besteht nur insoweit, dass völlig überflüssiger Sourcecode erzeugt wird. :twisted: Wird das ReadOnly mal geändert, weil doch Änderungen am Edit gemacht werden sollen, dann fliegt Dir das OnChange womöglich um die Ohren. In 2 Jahren oder so. :mrgreen:

jmit 27. Aug 2007 21:03

Re: Edit1.Text Inhalt sperren ?
 
Hallo,

Zitat:

Zitat von mkinzler
Einfach jede Änderung des Benutzers rückgängig machen.

Dies ist aber eine Lösung nach dem Motto "Quick and dirty" :gruebel:

Gruß Jörg

Hansa 27. Aug 2007 21:14

Re: Edit1.Text Inhalt sperren ?
 
Quick stimmt, aber wieso ist das dirty ? :shock: Brauche das zwar nicht, aber vielleicht irgendwann doch. Für den beschriebenen Einzelfall ist ReadOnly wohl schon das Beste, weil das Feld ja nicht geändert werden soll. Ansonsten ist Onchange quick and dirty. Normalerweise ist bei einer Änderung eines Buchstabens in einem Edit kein Aktionismus gefordert. :P


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 Uhr.

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