Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Editfeld verschwinden lassen und wieder aufrufen


Financeflash - Di 02.02.10 18:01
Titel: Editfeld verschwinden lassen und wieder aufrufen
Hi
Ich möchte auf meiner Oberfläche nur ein Button haben. Wenn ich auf diesen drauf klicke, dann soll mein Editfeld erscheinen.
DANKE für die hoffentlich richtige Lösung


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Di 02.02.2010 um 17:23


Blackheart666 - Di 02.02.10 18:04

Schau dir mal die Eigenschaft Visible an.


Financeflash - Di 02.02.10 18:07

danke

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Das ist mein Programm. Und zwar will ich einen Namen eingeben und diesen dann dem TString zuweisen. Danach soll nach dem man den Button betätigt hat sich das gleiche Fenster nochmal öffnen und der nächste Nme soll dem TString zugewiesen werden.

Leider funktioniert das mit den Editfeldern nicht. Die sind zwar weg, aber der mekert immer noch, dass ich dort was eingeben soll.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
unit Uohg;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    edGesellschafter: TEdit;
    btnBestaetigen: TButton;
    lbName: TLabel;
    edName: TEdit;
    lbKapital: TLabel;
    edKapital: TEdit;
    lbAufforderung: TLabel;
    procedure btnBestaetigenClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var SVa:array[0..20of string;
    SVb:array[0..20of single;


procedure TForm1.btnBestaetigenClick(Sender: TObject);
var count:integer;Name:string;
begin
  if StrToInt(edGesellschafter.Text) > 20
  then ShowMessage('Maximale Anzahl der Gesellschafter überschritten!')
  else
    begin for count:=1 to StrToInt(edGesellschafter.Text) do
      begin
        edKapital.Visible:=true;
        edName.Visible:=true;
        lbAufforderung.Caption:='Bitte geben die für jeden Gesellschter den Namen und das eingebrachte Kapital an!';
        lbName.Caption:='Name des Gesellschafters:';
        lbKapital.Caption:='eingebrachtes Kapital:';
        SVa[count]:=edName.Text;
        SVb[count]:=StrToFloat(edKapital.Text);
      end;
    end;
end;
end.


Sinspin - Di 02.02.10 21:31

Hallo und :welcome: in der EE!

Dein Quelltext macht genau das was du ihm aufgetragen hast. Sicherlich ist es aber etwas anderes was du von deinem Programm erwartest.
Als erstes würde ich dir als Anfänger (nicht bös gemeint) den Crashkurs [http://www.delphi-library.de/viewtopic.php?t=37446&start=0&postorder=asc&highlight=crashkurs] von Christian Stelzmann ans Herz legen.

Nun zu deinem Problem.
Du möchtest das dein Nutzer ein Anzahl von Namen und Wertepaaren eingibt. Bisher hat er dazu ja aber keine Chance da du die Eingabefelder erst sichtbar machst wenn du die Werte auch schon ausliest.

Fang doch besser erstmal so an das die Eingabefelder immer sichtbar sind.
Als weiteres brauchst du dafür auch keine Schleife. Du merkst dir lediglich wieviele Namen und Wertepaare er schon eingegeben hat. Den Wert kannst du ja auch anzeigen so das der Nutzer weis wieviele noch kommen.
Jedsmal wenn er auf einen Button clickt übernimmst du die Werte und erhöhst den Zähler dafür um eins. Und machst die Eingabefelder leer, so sieht er gleich das es die Daten übernommen wurden.

Nebenbei :
- Variablen speichert man nicht global sondern unter private in der Klasse. Das gillt dann auch für deine Zählvariable.
- Warum scheibst du die Texte für die Label erst im Quelltext? Die kannst du doch auch über den Designer eingeben. Wenn es dir ums unsichtbar machen geht. Visible gibt es auch bei Labeln.
- Was meints du mit TString? Das gibt es in deinem Quelltext nirgendwo. Falls es dir um eine StringListe geht heißt die TStringList. Mit der Klasse TString kann man nicht arbeiten.


Financeflash - Mi 03.02.10 17:00

Mein Problem ist:
Ich will zwie Editfelder haben und einen Button.
Ins erste Editfeld gebe ich den Namen ein und ins zweite sein Kapital.
Wenn ich auf den Button klicke sollen die Eingaben gespeichert werden und die Editfelder wieder gelöscht werden.
Wenn es 5 Bewerber sind muss dies 5 mal geschehen und am Ende will ich alles in einer Tabelle ausgeben.
Ich komme einfach nicht weiter.