AGB  ·  Datenschutz  ·  Impressum  







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

Beliebig viele Editfelder anzeigen

Ein Thema von BackOrifice · begonnen am 12. Feb 2009 · letzter Beitrag vom 15. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von BackOrifice
BackOrifice

Registriert seit: 6. Jun 2005
74 Beiträge
 
Delphi 2007 Architect
 
#1

Beliebig viele Editfelder anzeigen

  Alt 12. Feb 2009, 23:47
Nabend.

Ich möchte auf einem Formular beliebig viele (bis max. 10) Editfelder anzeigen lassen können. Die Anzahl der TEdits soll der Benutzer durch 2 Buttons '+' und '-' einstellen können. Idealerweiße werden die Editfelder untereinander gelistet.

Ich dachte dabei an eine TObjectList (aus der Unit Contnrs).

Delphi-Quellcode:
  private
    { Private-Deklarationen }
    EditList : TObjectList ;
...
  EditList := TObjectList.Create;
...
  EditList := TObjectList.Free; // Gibt alle Objekte im Array und das Objekt selbst frei
Jetzt dachte ich, ich könnte bei einem InsertEdit folgendes tun:
Delphi-Quellcode:
var i : integer;
begin
  i := EditList.Add(TEdit.Create(self));
  EditList.Items[i].Left := 10;
  EditList.Items[i].Text := 'bla';
...
end
Aber das funktioniert leider nicht - denn der Compiler weiß ja noch nicht, dass ich im Objekt eine WinControl-Instanz habe. Wie kann ich soetwas lösen?

Danke.
Henning
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Beliebig viele Editfelder anzeigen

  Alt 13. Feb 2009, 00:21
Versuch es doch mal so...
Delphi-Quellcode:
var i : integer;
    ItemObject:TObject;
    Edit:TEdit;
begin
  i := EditList.Add(TEdit.Create(self));
  ItemObject:=EditList.Items[i];
  if ItemObject is TEdit then begin
    Edit:=TEdit(ItemObject);
    Edit.Left := 10;
    Edit.Text := 'bla';
  end;
...
end
  Mit Zitat antworten Zitat
Benutzerbild von BackOrifice
BackOrifice

Registriert seit: 6. Jun 2005
74 Beiträge
 
Delphi 2007 Architect
 
#3

Re: Beliebig viele Editfelder anzeigen

  Alt 13. Feb 2009, 00:27
Alles klar, danke

//Warum muss ich den Umweg über den ItemObject gehen?
Henning
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Beliebig viele Editfelder anzeigen

  Alt 13. Feb 2009, 00:30
Ich finde das übersichtlicher, erforderlich ist es nicht.
  Mit Zitat antworten Zitat
Benutzerbild von BackOrifice
BackOrifice

Registriert seit: 6. Jun 2005
74 Beiträge
 
Delphi 2007 Architect
 
#5

Re: Beliebig viele Editfelder anzeigen

  Alt 13. Feb 2009, 01:00
mh, ich kann Eigenschaften so viel ich will dem Editfeld hinzufügen - es wird zwar Speicher dafür angelegt aber es wird nirgends auf dem Form angezeigt.

Was vergesse ich?
Henning
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Beliebig viele Editfelder anzeigen

  Alt 13. Feb 2009, 01:05
Edit.Parent gesetzt?
  Mit Zitat antworten Zitat
Benutzerbild von BackOrifice
BackOrifice

Registriert seit: 6. Jun 2005
74 Beiträge
 
Delphi 2007 Architect
 
#7

Re: Beliebig viele Editfelder anzeigen

  Alt 13. Feb 2009, 15:24
Perfekt! Das wars! Ich danke dir <3
Henning
  Mit Zitat antworten Zitat
I.A

Registriert seit: 14. Jan 2007
83 Beiträge
 
#8

Re: Beliebig viele Editfelder anzeigen

  Alt 14. Feb 2009, 14:10
Hallo,

hab beim Stöbern diesen Beitrag entdeckt und deshalb mal die folgende Prozedur entwickelt:

Delphi-Quellcode:
procedure Tdbmain.CreateMask;
var FieldNum: Integer; Field: TStrings; FieldName: String; TopPos,LeftPos: Integer;
begin
  TopPOs := 5; LeftPos := 40;
  Field := TStrings.Create;
  dbf.Fields.GetFieldNames(Field);
  for Fieldnum := 0 to dbf.Fields.Count-1 do
  begin
    FEdit := TLabeledEdit.Create(Self);
    FEdits.AddObject(Field[Fieldnum], FEdit);
  end;
  for Fieldnum := 0 to dbf.Fields.Count-1 do
  begin
    FieldName := LowerCase(Field[FieldNum]);
    FieldName[1] := Upcase(FieldName[1]);
    FCtrl := FEdits.Objects[FieldNum];
    FEdit := TLabeledEdit(FCtrl);
    FEdit.Parent := DBScroll;
    FEdit.Left := 40;
    FEdit.Top := TopPos;
    FEdit.Show;
    Inc(TopPos, FEdit.Height + 5);
  end;
  Field.Free;
end;
Da ich unter Lazarus die TDbf Komponente verwende, habe ich statt TObjectlist eine normale Stringlste verwendet.

Nun frag ich mal, wie ordnet die IDE bei datensensitiven Komponenten die Felnamen zu.

Wenn ich diesen Mechnismus für eine Eingabemaske einer Datenbank verwenden will, muss ja diese Maske, abhängi von der Anzahl der Felder in der Datenbank unterschiedlich viele Eingabefelder haben,. Der Einfachheit halber will ich erst mal nur Editfelder (TDBEdit) verwenden, zusammen mit TDBText wegen dem Eingabeprompt.

Wie ordnet TDatasource dem Eingabefeld das richtige Datenbankfeld zu?

Inzwischen werde ich weiter experimentieren. Vielleicht genügt es ja, einfach Feldanzahl Editfelder in die Liste einzufügen und nach obiger Prozedur zur Anzeige zu bringen, während TDataSource sich um die richtige Feldzuordnung kümmert. Wenn das klappt, wieso klappt das?

Das ich TDbf verwende liegt an der Art meiner Datenbank, die im Umfang klein genug ist, um keine umfangreiche Datenbankmaschine zu benötigen.
  Mit Zitat antworten Zitat
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#9

Re: Beliebig viele Editfelder anzeigen

  Alt 14. Feb 2009, 19:40
Ja, wie ordnet DataSource das richtige Datenfeld zu. Das interessiert mich auch. Lad Dir mal Turbo Delphi runter. Da sind die Quelltexte sämtlicher Komponenten dabei. Damit sollte sich die Frage beantworten lassen.
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
delphifan2004

Registriert seit: 26. Nov 2004
Ort: Dresden
266 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: Beliebig viele Editfelder anzeigen

  Alt 15. Feb 2009, 13:50
Hallo,

ich vestehe die Fragestellung nicht @I.A. Es gibt doch neben der Eigenschaft DataSource noch die Eigenschaft DataField, die dem Eingabefeld das richtige Datenbenk-Feld zuweist. Das stht sogar unmittelbar bei der Eigenschaft DataSource. Dort das Datenfeld zuweisen und gut is.
  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 13:50 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