AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Projektvorschlag Automatische Datenbank Eingabemasken

Projektvorschlag Automatische Datenbank Eingabemasken

Ein Thema von delphifan2004 · begonnen am 19. Aug 2014 · letzter Beitrag vom 20. Mai 2019
Antwort Antwort
Seite 2 von 2     12
delphifan2004
Registriert seit: 26. Nov 2004
Hallo,

ich beschäftige mich gerade damit, automatische Datensatz-Eingabemasken zu erzeugen. Wie wir alle wissen, erscheint in der Delphi Datenbankoberfläche je nach Anzahl der Datenfelder in der konkreten Datenbankdatei immer die richtige Anzahl Eingabefelder für den Datensatz. Dies war im guten alten DBase zu DOS Zeiten genauso. Je nach Anzahl der Datenfelder hatten wir die richtige Anzahl Eingabefelder auf dem Bildschirm. Das will ich nun mit Delphi auch haben, noch dazu mit für den jeweiligen Feld-Datentyp passenden Eingabefeldern. Für ein Boolean Feld zum Beispiel eine TCheckBox für einen Bild-Datentyp ein TImage, ...

Mein Ansatz ist folgender:

- ich habe zunächst eine Unit gebaut mit einer TCustomInputmask-Klasse, die von TScrollBox abstammt.
- Diese Inputmask stellt Methoden bereit, die später die Datenfelder erzeugen.
- Eine nachfolgende TInputmask Klasse kann für Pascal Records dieselbe Aufgabe erfüllen.

- Es folgt eine weitere Unit für die DBInputmask. Hier kommen die Daten von einer TDataSource Komponente. Die Eingabefelder hängen nun vom Datentyp des konkreten Feldes in DataSource.DataSet.Field.DataType ab.


Verbesserungsvorschläge sind jederzeit willkommen. Das Ganze soll GPL werden und somit OpenSource.
Angehängte Dateien
Dateityp: pas InputMask.pas (10,1 KB, 20x aufgerufen)
Dateityp: pas DBInputMask.pas (6,3 KB, 20x aufgerufen)
Dateityp: zip 24-Inputmask.zip (3,2 KB, 22x aufgerufen)

Geändert von mkinzler (21. Aug 2014 um 10:06 Uhr)
 
jobo

 
Delphi 2010 Enterprise
 
#11
  Alt 19. Aug 2014, 21:33
In meiner Lieblings-IDE zu meiner Lieblings DB bekomme ich FK Felder automatisch als Lookup angezeigt, wenn ich auf die bloße Tabelle zugreife und im Edit Mode bin.
Das klingt ja fast nach Access
Wir haben mal tolle Sachen mit access gemacht, aber das ist lange her, das war access 97. Hatte ich aber fast nichts mit zu tun.

Meine Lieblingsdb ist Oracle.

Wir verwenden übrigens auch dynamisch erstellte Formulare. Das ist vor allem kostengünstig und ermöglicht eine sehr hohe Umsetzungsgeschwindigkeit. Schön ist ein anderes Thema. Aber das kann der Kunde sich ja aussuchen.
Lookups erstellen wir dabei allerdings nicht anhand von FK Constraints automatisch, sondern gezielt deklarativ, so wie sie benötigt werden.
  Mit Zitat antworten Zitat
delphifan2004

 
Delphi 7 Personal
 
#12
  Alt 21. Aug 2014, 09:48
Hallo,

hier ist die Nachfolgeversion meines Eingabemasken Generators. Keyfelder sind noch nicht berücksichtigt, aber die Erzeugung der Feldtypabhängigen Eingabe-Controls dagegen schon.

Überschrieben werden nur noch die Methoden DoCreateXXXX.

Zum Beispiel DoCreateDBEdit, DoChreateDBCheckBox, ...

Jetzt geht es weiter.

Es gibt eine Methode Adjust(Control), wie folgt definiert:

Delphi-Quellcode:
procedure TInputmask.Adjust(AControl: TControl);
begin
  case FLabAlignmt of
   alLabelLeft: FCurrentLeft := FCurrentLeft + FHorSpacing;
   alLabelRight: FCurrentLeft := FCurrentLeft + FHorSpacing + FEdtSpacing;
   alLabelTop: FCurrentTop := FCurrentTop + AControl.Height + FVertSpacing;
  end;
end;

//FCurrentLeft,FCurrentTop werden in den DoCreateXXXX Methoden angepasst.

//Hier ist mein Testformular:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, UDBInputMask, DB, DBTables, DBClient;

type
  TForm1 = class(TForm)
    DataSource1: TDataSource;
    Bezeichnung: TClientDataSet;
    BezeichnungBezeichnung: TStringField; //Mit MyBase -> TClientDataSet -> Feld Bezeichnung
    BezeichnungMenge: TIntegerField; //Mit MyBase -> TClientDataSet -> Feld Menge
    BezeichnungBestellt: TBooleanField; //Mit MyBase -> TClientDataSet -> Feld Bestellt
    BezeichnungBeschreibung: TMemoField; //Mit MyBase -> TClientDataSet -> Feld Beschreibung
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    FMask: TDBInputMask;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
begin
  FMask := TDBInputMask.Create(self);
  FMask.DataSource := DataSource1;
  FMask.LabelSpacing := 3;
  FMask.Left := 3;
  FMask.Top := 8;
  FMask.Width := ClientWidth - 6;
  FMask.Height := ClientHeight - 56;
  FMask.CreateMask;
  FMask.Parent := self;
end;

end.
Leider kann ich meinen ersten Beitrag nicht mehr bearbeiten, das heißt, den Text ändern geht, aber ich kann keine Dateianhänge nizufügen, deshalb die neue Version hier.

.
Angehängte Dateien
Dateityp: zip 24-Inputmask.zip (3,2 KB, 14x aufgerufen)
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 10.2 Tokyo Enterprise
 
#13
  Alt 21. Aug 2014, 09:51
Bitte bearbeite den 1. Beitrag:
-Entferne die Sourcen (aus Beitrag)
-Übersicht über Projekt
-Versions/Änderungsübersicht

und hänge die neue Version(en) an diesen Beitrag an.

Danke.
Markus Kinzler
  Mit Zitat antworten Zitat
delphifan2004

 
Delphi 7 Personal
 
#14
  Alt 21. Aug 2014, 10:04
Sourcen sind raus aus dem ersten Beitrag, Neue Dateien als Anhang dranhängen kann ich nicht, leider, dazu fehlt das Büroklammernsymbol, auf das ich sonst hierzu klicke. Ich kriege dieses Projekt nicht bezahlt und werde deshalb nicht in den Tiefen der Menüs der DP diese Funktion suchen, wie ich das als bezahlter Programmierer vielleicht tun müsste. So bleibt die neue Version meiner Inputmask Units jetzt in diesem neuen Beitrag oder einer von Euch transferiert die in meinen ersten Beitrag. In diesem Eingabememo hier ist oben das Büroklammersymbol zu sehen, das ich zum Anhängen von Dateien anklicken muss, beim Editieren meines ersten Beitrages nicht mehr. Sorry. Habe jetzt noch andere Termine.
  Mit Zitat antworten Zitat
mkinzler

 
Delphi 10.2 Tokyo Enterprise
 
#15
  Alt 21. Aug 2014, 10:12
Dies ist nur im erweiterten Beitragseditor möglich. In diesem gelangt man, in dem man bearbeiten doppelklickt (statt einfach) oder im einfachen Editor in den erweiterten wechselt
Miniaturansicht angehängter Grafiken
erweitert.jpg  
Markus Kinzler
  Mit Zitat antworten Zitat
joehd

 
Delphi XE8 Professional
 
#16
  Alt 19. Mai 2019, 17:25
Ich suche eigentlich so was auch wenn der Beitrag schon älter ist gibt es da eine Anleitung wie das gemacht werden soll das die Eingabemaske erzeugt wird ? Danke schon mal
Grüße joe
joe
  Mit Zitat antworten Zitat
hoika

 
Delphi XE4 Professional
 
#17
  Alt 19. Mai 2019, 18:48
Hallo,
also ich baue mir meine Eingabefelder selbst zusammen.
Heiko
  Mit Zitat antworten Zitat
joehd

 
Delphi XE8 Professional
 
#18
  Alt 20. Mai 2019, 07:23
Hallo,
also ich baue mir meine Eingabefelder selbst zusammen.
Das mache ich ja auch so aber es wäre doch cool wenn man eine Hand voll eingabekomponenten gemäß der Datenbank ggf SQL Source schon automatisch hätte. Zb. Anlegen eines Records, anlegen der Eingabefelder, Löschen der Eingaben, Löschen des Records , aufruf und abspeicherfunktionen . Das ist immer viel geschreibsel und wehe eine Kleinigkeit ist falsch ...
joe
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 04:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf