Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem: DBEdit/Edit Felder per Knopfdruck generieren (https://www.delphipraxis.net/109791-problem-dbedit-edit-felder-per-knopfdruck-generieren.html)

ShortyHL 11. Mär 2008 17:38

Re: Problem: DBEdit/Edit Felder per Knopfdruck generieren
 
Die ist etwas länger: Soll ich sie trotzdem posten?

DeddyH 11. Mär 2008 17:43

Re: Problem: DBEdit/Edit Felder per Knopfdruck generieren
 
Da werden wir nicht drum herum kommen :)

ShortyHL 11. Mär 2008 18:10

Re: Problem: DBEdit/Edit Felder per Knopfdruck generieren
 
Delphi-Quellcode:
function Create_Fields(Mode, DLeft, DTop, DWidth, DHeight: Integer; DText: String): TDBEdit;

        var DBE: TDBEdit;
        var DLabel: TLabel;
        var DMemo: TMemo;
        var DEdit: TEdit;
        var i, x, y, LabelNum, DLeft_Counter: Integer;

        begin


                LabelNum := 1;

                        DLeft_Counter := 0;

                        for x := 1 to (Length(LabelArray) + 1) do begin

                                if LabelArray[x] = 'Artikel' then begin

                                        DMemo := TMemo.Create(Form1);
                                        with DMemo do begin

                                                Name := 'Memo_' + IntToStr(Save_NumFields);
                                                Parent := Form1.ScrollBox1;

                                                Left := Left + DLeft + DLeft_Counter;

                                                if x <= Length(LabelArray) then Top := Top + DTop + 16;

                                                Width := DWidth;
                                                Height := DHeight + 20;

                                                ScrollBars := ssVertical;

                                                Text := '';

                                        end;

                                end else begin

                                        if x <= Length(LabelArray) then begin

                                                DEdit := TEdit.Create(Form1);
                                                with DEdit do begin

                                                        Name := 'Edit_' + IntToStr(Save_NumFields);
                                                        Parent := Form1.ScrollBox1;

                                                        Left := Left + DLeft + DLeft_Counter;

                                                        if x <= Length(LabelArray) then Top := DTop + 32
                                                        else Top := DTop + 16;

                                                        if (LabelArray[x] = 'EP') OR (LabelArray[x] = 'GP') then begin

                                                                Width := DWidth - 80;
                                                                Text := '0,00'

                                                        end
                                                        else begin

                                                                Width := DWidth;
                                                                Text := '';

                                                        end;

                                                        Height := DHeight;

                                                        if LabelArray[x] = 'GP' then Enabled := false;

                                                end;

                                                DBE := TDBEdit.Create(Form1);
                                                with DBE do begin

                                                        Name := 'DBEdit_' + IntToStr(Save_NumFields);
                                                        Parent := Form1.ScrollBox1;

                                                        Left := Left + DLeft + DLeft_Counter;

                                                        if x <= Length(LabelArray) then Top := DTop + 32
                                                        else Top := DTop + 16;

                                                        if (LabelArray[x] = 'EP') OR (LabelArray[x] = 'GP') then Width := DWidth - 80
                                                        else Width := DWidth;

                                                        Height := DHeight;

                                                        Text := DText;

                                                        Visible := false;

                                                end;

                                        end;

                                        DLabel := TLabel.Create(Form1);
                                        with DLabel do begin

                                                Name := 'Label_' + IntToStr(Save_NumFields);
                                                Parent := Form1.ScrollBox1;

                                                Left := Left + DLeft + DLeft_Counter;

                                                if x <= Length(LabelArray) then begin

                                                        if LabelArray[x] = 'Artikel' then Top := DTop - 56
                                                        else TLabel(DLabel).Top := DTop + 16;

                                                end else Top := DTop - 16;

                                                Caption := LabelArray[x];


                                        end;

                                end;

                                LabelNum := LabelNum + 1;

                                if Mode = 0 then Save_NumFields := Save_NumFields + 1
                                else Save_NumFields := Save_NumFields - 1;

                                DLeft_Counter := DLeft_Counter + 136;


                        end;

                        DLabel.Left := DLeft;
                        DTop := DTop + 48;

        end;

DeddyH 11. Mär 2008 18:17

Re: Problem: DBEdit/Edit Felder per Knopfdruck generieren
 
2 Dinge fallen mir spontan auf:
Delphi-Quellcode:
for x := 1 to (Length(LabelArray) + 1) do begin
Du liest hier über das Array hinaus.

Delphi-Quellcode:
DLabel.Left := DLeft;
DTop := DTop + 48;
Und was, wenn es kein DLabel gibt?

ShortyHL 11. Mär 2008 18:49

Re: Problem: DBEdit/Edit Felder per Knopfdruck generieren
 
Zitat:

Zitat von DeddyH
2 Dinge fallen mir spontan auf:
Delphi-Quellcode:
for x := 1 to (Length(LabelArray) + 1) do begin
Du liest hier über das Array hinaus.

Ja, weil sonst ist die Ausgabe "komisch"... Erstellte das Array mit "Artikel", "Anzahl", "EP" und "GP" und ausgegbeen wird es in einer anderen Reihenfolge, bzw. es werden "komische" Zeichen angezeigt.

Zitat:

Zitat von DeddyH
Delphi-Quellcode:
DLabel.Left := DLeft;
DTop := DTop + 48;
Und was, wenn es kein DLabel gibt?

DLabel muss es in jedem Fall geben, da mit dem Aufruf der Funktion sowohl DEdit, DLabel, DMemo und DBEdit erstellt wird. Da gibt es eigentlich keinen Sonderfall.

DeddyH 11. Mär 2008 18:54

Re: Problem: DBEdit/Edit Felder per Knopfdruck generieren
 
Schau Dir mal TObjectList an, die dürfte einfacher sein als ein dynamisches Array und ist ja eigentlich genau für solche Fälle gemacht.

ShortyHL 11. Mär 2008 20:21

Re: Problem: DBEdit/Edit Felder per Knopfdruck generieren
 
TObjectList sagt mir nun gar nichts. Find ich dafür eine Komponente im Programm?

mkinzler 11. Mär 2008 20:23

Re: Problem: DBEdit/Edit Felder per Knopfdruck generieren
 
Eine TObjectList verwaltet eine Liste von (T)Object)en)

ShortyHL 11. Mär 2008 20:48

Re: Problem: DBEdit/Edit Felder per Knopfdruck generieren
 
Puuh, damit schmeißt ihr mich aber ins kalte Wasser :)... Kann mir darunter gerade gar nichts vorstellen. Hab zwar gerade einwenig gegoogelt, aber zurzeit weiß ich noch nicht, wie ich das wo in meinen bestehenden Code einbaue ^^.

mkinzler 11. Mär 2008 20:51

Re: Problem: DBEdit/Edit Felder per Knopfdruck generieren
 
http://www.delphi-treff.de/tutorials...t/katalog/182/

DeddyH 11. Mär 2008 20:51

Re: Problem: DBEdit/Edit Felder per Knopfdruck generieren
 
Eine TStringlist kennst Du aber, oder? Nun stell Dir das Gleiche vor mit Objekten statt Strings ;)

ShortyHL 11. Mär 2008 21:11

Re: Problem: DBEdit/Edit Felder per Knopfdruck generieren
 
Denk Link hab ich mir bereits auch durchgelesen, aber das hilf mir prinzipiell nicht weiter. Was eine TStringList ist, weiß ich glaub ich nicht. Zumindest hab ich mich bewusst damit nicht beschäftigt :).

DeddyH 11. Mär 2008 21:15

Re: Problem: DBEdit/Edit Felder per Knopfdruck generieren
 
F1 always helps :zwinker:

mkinzler 11. Mär 2008 21:17

Re: Problem: DBEdit/Edit Felder per Knopfdruck generieren
 
In dem Tutorial steht doch wie man die Liste anwendet und der Unterschied zu einem Array


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:16 Uhr.
Seite 2 von 2     12   

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