AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Erst bei Edit-Wert Änderungen seichern (Button Enable)
Thema durchsuchen
Ansicht
Themen-Optionen

Erst bei Edit-Wert Änderungen seichern (Button Enable)

Ein Thema von BorlanDelphiUser · begonnen am 10. Mär 2003 · letzter Beitrag vom 10. Mär 2003
Antwort Antwort
BorlanDelphiUser

Registriert seit: 10. Mär 2003
Ort: Waltersdorf
91 Beiträge
 
Delphi 5 Professional
 
#1

Erst bei Edit-Wert Änderungen seichern (Button Enable)

  Alt 10. Mär 2003, 19:16
Ich habe folgendes Problem. Ich habe ein Formular mit einem oder mehreren Edit Feldern und eine Button. Der Button ist deaktiviert. Wenn sich jetzt eines der Editfelder ändert soll der Button aktiviert werden.

- Sinn der ganzen Sache. Man kann erste speichern wenn sich die Werte in den Edit Feldern ändern -

Hier noch einmal ein Beispiel um den Ablauf zu verdeutlichen: Das Formular wird auf aufgerufen das Editfeld hat den z.B. "Hallo Welt" jetzt lösche ich "Welt" und der Button soll aktiviert werden. Bis hier hin hab ich kein Problem. Jetzt komms, ich scheibe wieder "Welt" hinzu, und der Button soll wieder deaktiviert werden, da sich ja nicht am Ausgangswert geändert hat.

Dank schon mal im voraus!
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#2
  Alt 10. Mär 2003, 19:22
Du mußt dir zuerst mal speichern, was in den Edit Komponenten steht. Im OnChange fragst du dann ab, ob sich was geändert hat und vergleichst das mit den ursprünglichen Werten.

Gruß
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#3
  Alt 10. Mär 2003, 19:24
Jedes Edit hat ein Ereignis OnChange. Das wird aufgerufen, wenn sich der Text ändert.
Um den Button jetzt nur zu aktivieren, wenn, wie in deinem Beispiel, der Text "Hello World" drinsteht, kannst du folgendes tun:

Delphi-Quellcode:
procedure TForm1.Edit1OnChange(Sender: TObject);
const
  sReq = 'Hello world';
begin
  if Edit1.Text = sReg then Button1.Enabled := False;
end;
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
BorlanDelphiUser

Registriert seit: 10. Mär 2003
Ort: Waltersdorf
91 Beiträge
 
Delphi 5 Professional
 
#4
  Alt 10. Mär 2003, 19:49
Zitat von Tpercon:
Du mußt dir zuerst mal speichern, was in den Edit Komponenten steht. Im OnChange fragst du dann ab, ob sich was geändert hat und vergleichst das mit den ursprünglichen Werten.

Gruß

Die Variante hab ich schon probiert sie funktioniert auch. Bei 20 Eingabefeldern ist das aber ne Menge source und umständlich. Suche sowas ähnliches wie

self.text bloss das bezieht sich auf das formular sodass ich einen funktion für alle editfelder im onchange benutzen kann

Trotzdem Danke!
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#5
  Alt 10. Mär 2003, 20:07
Und wenn du die Werte der Edit's in nem Array speicherst. Die Position des Wertes gibt das Tag vom Edit an, dann würde eine OnChange Procedure reichen und du kannst mit dem sender spielen.
  Mit Zitat antworten Zitat
BorlanDelphiUser

Registriert seit: 10. Mär 2003
Ort: Waltersdorf
91 Beiträge
 
Delphi 5 Professional
 
#6
  Alt 10. Mär 2003, 20:18
Zitat von Tpercon:
Und wenn du die Werte der Edit's in nem Array speicherst. Die Position des Wertes gibt das Tag vom Edit an, dann würde eine OnChange Procedure reichen und du kannst mit dem sender spielen.
Wie mach ich das mit dem sender. Der rest ist mir ja klar.

Wär nett wenn du das mit dem Sender nochmal erklärst.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#7
  Alt 10. Mär 2003, 21:25
Ich werd da helfen können:

Der Sender ist das Objekt, dass das Ereignis hervorruft. Leider ist der Sender vom Typ TObject, unser Edit aber vom Typ TEdit.
Glücklicherweise ist TEdit aber von TObject abgeleitet, und unser Sender enthält, obwohl er vom Typ TObject ist, alle Eigenschaften und Methoden des Typs TEdit. Wir müssen Delphi nur noch mitteilen, dass es sich bei unserem Sender um ein Objekt des Typs TEdit handelt. Das können wir auf zwei Arten tun:

1.
Delphi-Quellcode:
procedure TForm1.Edit1OnChange(Sender: TObject);
const
  sReq = 'Hello world';
begin
  if TEdit(Sender).Text = sReg then Button1.Enabled := False;
end;
2.
Delphi-Quellcode:
procedure TForm1.Edit1OnChange(Sender: TObject);
const
  sReq = 'Hello world';
begin
  if (Sender as TEdit).Text = sReg then Button1.Enabled := False;
end;
Beides bewirkt das Gleiche, nämlich dass Delphi annimmt, es handle sich um ein TEdit-Objekt. Falls unser Sender allerdings mal kein TEdit wäre, könnte das allerdings eine Access Violation geben.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  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 06:23 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