![]() |
Inputquery mit TDatePicker
Hallo,
ist es möglich, in einer Inputquery einen TDatePicker einzubauen? Für eine kleine Abfrage möchte ich ungern eine extra Form erstellen müssen. LG Mathias :-) |
AW: Inputquery mit TDatePicker
Zitat:
|
AW: Inputquery mit TDatePicker
Zitat:
Delphi-Quellcode:
unit Unit_AddBorrow;
interface uses Unit_Helper_Language, Unit_VCLFunctions, Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.WinXPickers; type TForm_AddBorrow = class(TForm) Edit_AddBorrowName: TEdit; DatePicker_AddBorrowDate: TDatePicker; Button_AddBorrowOK: TButton; Button_AddBorrowCancel: TButton; Label_AddBorrow_Name: TLabel; Label_AddBorrow_Date: TLabel; procedure FormCreate(Sender: TObject); procedure Button_AddBorrowOKClick(Sender: TObject); procedure Button_AddBorrowCancelClick(Sender: TObject); procedure FormShow(Sender: TObject); private { Private-Deklarationen } FResultAddBorrowName: String; FResultAddBorrowDate: TDate; public { Public-Deklarationen } property ResultAddBorrowName: String read FResultAddBorrowName write FResultAddBorrowName; property ResultAddBorrowDate: TDate read FResultAddBorrowDate write FResultAddBorrowDate; end; var Form_AddBorrow: TForm_AddBorrow; implementation {$R *.dfm} procedure TForm_AddBorrow.Button_AddBorrowCancelClick(Sender: TObject); begin ModalResult := mrCancel; end; procedure TForm_AddBorrow.Button_AddBorrowOKClick(Sender: TObject); begin FResultAddBorrowName := trim(Edit_AddBorrowName.Text); FResultAddBorrowDate := DatePicker_AddBorrowDate.Date; ModalResult := mrOK; end; procedure TForm_AddBorrow.FormCreate(Sender: TObject); begin Form_AddBorrow.Caption := _Form_AddBorrow; Button_AddBorrowOK.Caption := _Button_AddBorrowOK; Button_AddBorrowCancel.Caption := _Button_AddBorrowCancel; Label_AddBorrow_Name.Caption := _Label_AddBorrow_Name; Label_AddBorrow_Date.Caption := _Label_AddBorrow_Date; end; procedure TForm_AddBorrow.FormShow(Sender: TObject); var Dummy_TPoint: TPoint; begin Edit_AddBorrowName.Text := ''; DatePicker_AddBorrowDate.Date := now; if FResultAddBorrowName.Length > 0 then Edit_AddBorrowName.Text := FResultAddBorrowName; try if FResultAddBorrowDate <> 0 then DatePicker_AddBorrowDate.Date := FResultAddBorrowDate; finally end; if getCursorpos(Dummy_TPoint) then begin Self.Left := Dummy_TPoint.X; Self.Top := Dummy_TPoint.Y; CheckSeitenForm(Self); end; Edit_AddBorrowName.SetFocus; end; end. Kleine Zusatzfrage: Damit aus der Form die Ergebnisse an die "Aufrufform" zurück gegeben werden, habe ich die Propertys deklariert. Ist das in Ordnung so? LG Mathias |
AW: Inputquery mit TDatePicker
Warum so kompliziert?
Ich zeige mal wie ich es machen würde.
Delphi-Quellcode:
Das Ergebnis ist in Variable date.
procedure TForm9.Button1Click(Sender: TObject);
var dlg: TForm; dp: TDatePicker; lbl: TLabel; btn: TBitBtn; date: TDate; checker: Boolean; begin dlg := TForm.Create(Application.MainForm); try dlg.BorderStyle := bsDialog; dlg.Caption := 'TDatePicker'; dlg.FormStyle := fsStayOnTop; dlg.Position := poOwnerFormCenter; dlg.BorderIcons := [biSystemMenu]; lbl := TLabel.Create(dlg); lbl.Parent := dlg; lbl.Align := alTop; lbl.Alignment := taCenter; lbl.AlignWithMargins := True; lbl.Caption := 'Choose Date'; dp := TDatePicker.Create(dlg); dp.Parent := dlg; dp.Align := alTop; dp.AlignWithMargins := True; btn := TBitBtn.Create(dlg); btn.Parent := dlg; btn.Align := alTop; btn.Caption := 'Ok.'; btn.ModalResult := MrOk; btn.Kind := bkOK; btn.AlignWithMargins := True; dlg.AutoSize := True; checker := (btn.ModalResult = dlg.ShowModal); date := dp.Date; finally btn.Free; dp.Free; lbl.Free; dlg.Free; end; end; Viel spass damit :-) |
AW: Inputquery mit TDatePicker
Huhu und Danke für den Code.
Nun habe ich noch ein Label und ein Edit hinzugefügt, beide auf alTop gesetzt. Wie kann ich die Ausrichtung verändern, dass lbl1 über dem Edit und lbl2 über dem TDatePicker angeordnet sind?
Delphi-Quellcode:
LG :-)
var
dlg: TForm; dp: TDatePicker; lbl1: TLabel; lbl2: TLabel; edt: TEdit; btn: TBitBtn; date: TDate; checker: Boolean; begin dlg := TForm.Create(Application.MainForm); try dlg.BorderStyle := bsDialog; dlg.Caption := _Form_AddBorrow; dlg.FormStyle := fsStayOnTop; dlg.Position := poOwnerFormCenter; dlg.BorderIcons := [biSystemMenu]; lbl1 := TLabel.Create(dlg); lbl1.Parent := dlg; lbl1.Align := alTop; lbl1.Alignment := taCenter; lbl1.AlignWithMargins := True; lbl1.Caption := 'Name'; edt := TEdit.Create(dlg); edt.Parent := dlg; edt.Align := alTop; edt.AlignWithMargins :=true; lbl2 := TLabel.Create(dlg); lbl2.Parent := dlg; lbl2.Align := alTop; lbl2.Alignment := taCenter; lbl2.AlignWithMargins := True; lbl2.Caption := 'Choose Date'; dp := TDatePicker.Create(dlg); dp.Parent := dlg; dp.Align := alTop; dp.AlignWithMargins := True; btn := TBitBtn.Create(dlg); btn.Parent := dlg; btn.Align := alTop; btn.Caption := _Button_AddBorrowOK; btn.ModalResult := MrOk; btn.Kind := bkOK; btn.AlignWithMargins := True; dlg.AutoSize := True; checker := (btn.ModalResult = dlg.ShowModal); date := dp.date; finally btn.Free; dp.Free; lbl1.Free; edt.Free; lbl2.Free; dlg.Free; end; |
AW: Inputquery mit TDatePicker
Zitat:
2. Fange beim obersten Element an, setze es auf
Delphi-Quellcode:
, mach das für jedes Element, jeweils eine Nummer größer = fertig :-)
.Top := 0;
(also "lbl1.Top := 0" "edt.Top := 1" usw) Ps: Kannst auch wieder 'ne methode draus machen, dann lass "date" weg, setz das als "var date: TDate", lass checker weg und nehme "Result" dafür. "if result then date := dp.date;" ...huch... dann brauchst du auch noch edt als return wert?... nehm den auch in "var" mit auf von methode. |
AW: Inputquery mit TDatePicker
Herzliche Grüße und vielen lieben Dank!
Ich baue es nachher um, bin zu müde.. 😴 LG Mathias |
AW: Inputquery mit TDatePicker
Nur so als vorschlag.
Delphi-Quellcode:
Ps: Wenn ich himitsu richtig verstanden habe, benötigt man nicht diese ganzen .Free operationen, es würde auch ein einziges dlg.Free ausreichen.
unit Unit9;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.WinXPickers, Vcl.StdCtrls, Vcl.Buttons; type TForm9 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private function MyInpQry(var ADate: TDate; var AName: string): Boolean; public end; var Form9: TForm9; implementation {$R *.dfm} function TForm9.MyInpQry(var ADate: TDate; var AName: string): Boolean; var dlg: TForm; dp: TDatePicker; lbl1: TLabel; lbl2: TLabel; edt: TEdit; btn: TBitBtn; begin dlg := TForm.Create(Application.MainForm); dp := nil; lbl1 := nil; lbl2 := nil; edt := nil; btn := nil; try dlg.BorderStyle := bsDialog; dlg.Caption := 'My Input Query'; dlg.FormStyle := fsStayOnTop; dlg.Position := poOwnerFormCenter; dlg.BorderIcons := [biSystemMenu]; lbl1 := TLabel.Create(dlg); lbl1.Parent := dlg; lbl1.Align := alTop; lbl1.Alignment := taCenter; lbl1.AlignWithMargins := True; lbl1.Caption := 'Enter Name'; edt := TEdit.Create(dlg); edt.Parent := dlg; edt.Align := alTop; edt.AlignWithMargins :=true; lbl2 := TLabel.Create(dlg); lbl2.Parent := dlg; lbl2.Align := alTop; lbl2.Alignment := taCenter; lbl2.AlignWithMargins := True; lbl2.Caption := 'Choose Date'; dp := TDatePicker.Create(dlg); dp.Parent := dlg; dp.Align := alTop; dp.AlignWithMargins := True; btn := TBitBtn.Create(dlg); btn.Parent := dlg; btn.Align := alTop; btn.ModalResult := MrOk; btn.Kind := bkOK; btn.Caption := 'Use that.'; btn.AlignWithMargins := True; lbl1.Top := 0; edt.Top := 1; lbl2.Top := 2; dp.Top := 3; btn.Top := 4; dlg.AutoSize := True; Result := (btn.ModalResult = dlg.ShowModal); if Result then begin ADate := dp.date; AName := edt.Text; end; finally btn.Free; dp.Free; lbl1.Free; edt.Free; lbl2.Free; dlg.Free; end; end; procedure TForm9.Button1Click(Sender: TObject); var date: TDate; s: string; begin if MyInpQry(date, s) then MessageBox(0, PChar(s + ' has selected: ' + DateToStr(date)), PChar('Result'), MB_OK) else MessageBox(0, PChar('Dialog canceled.'), PChar('Result'), MB_OK); end; end. |
AW: Inputquery mit TDatePicker
Zitat:
Nebenbei, wie kommst Du auf himitsu, ist doch gar kein Beitrag hier mit dabei von ihm/ihr?. LG |
AW: Inputquery mit TDatePicker
Zitat:
2. Das war in einem anderen Thread, da ging es auch um dynamisch erzeugte Objekte. (Da ich hier owner und parent setze, sollte auch ein dlg.Free ausreichen, habe es aber noch nicht getestet.) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:02 Uhr. |
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