Delphi-PRAXiS
Seite 5 von 6   « Erste     345 6      

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 16:38

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

DeddyH 11. Mär 2008 16:43

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

ShortyHL 11. Mär 2008 17: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 17: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 17: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 17: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 19: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 19:23

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

ShortyHL 11. Mär 2008 19: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 19:51

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:04 Uhr.
Seite 5 von 6   « Erste     345 6      

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-2025 by Thomas Breitkreuz