Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Inputbox mit autmatischer Längenanpassung wie Messagebox (https://www.delphipraxis.net/163715-inputbox-mit-autmatischer-laengenanpassung-wie-messagebox.html)

DeddyH 13. Okt 2011 10:50

AW: Inputbox mit autmatischer Längenanpassung wie Messagebox
 
Ich habe mal ein wenig herumprobiert, evtl. mag das als erster Ansatz hilfreich sein:
Delphi-Quellcode:
procedure TForm7.Button1Click(Sender: TObject);
const
  Frage = 'Select the device variant.' + #13#10 + '===============' +
    #13#10#13#10 + '1 - UPS with compact powerblock' + #13#10 +
    ' TempSensors R1.1 / R2.1 / R3.1 on REC - R4.1 / R5.1 / R6.1 on INV' +
    #13#10#13#10 + '2 - UPS with high powerblocks'#13#10 +
    ' TempSensors R1,1 / R1.2 / R2.1 / R2.2 / R3.1 / R3.2 on REC - R4.2 / R5.2 / R6.2 on INV'
    + #13#10#13#10 + '3 - UPS with high powerblocks' + #13#10 +
    ' TempSensors R1.1 / R1.2 / R2.1 / R2.2 / R3.1 / R3.2 on REC - R4.1 / R4.3 / R5.1 / R5.3 / R6.1 / R6.3 on INV'
    + #13#10#13#10;
  XOffset = 10;
  YOffset = 10;
var
  R: TRect;
begin
  R := Rect(XOffset, YOffset, XOffset, YOffset);
  DrawText(Canvas.Handle, Frage, -1, R, DT_LEFT or DT_TOP or DT_CALCRECT);
  ClientWidth := R.Right - R.Left + XOffset * 2; //Offset * 2 für Rand links und rechts, vertikal natürlich genauso, s.u.
  ClientHeight := R.Bottom - R.Top + YOffset * 2 + 50; //50 für den Button, ist natürlich anzupassen
  DrawText(Canvas.Handle, Frage, -1, R, DT_LEFT or DT_TOP);
end;

v2afrank 13. Okt 2011 10:59

AW: Inputbox mit autmatischer Längenanpassung wie Messagebox
 
Sieht gut aus. Danke

Bummi 13. Okt 2011 11:02

AW: Inputbox mit autmatischer Längenanpassung wie Messagebox
 
Delphi-Quellcode:
Function MyInputQuery(const ACaption, APrompt: string; var Value: string): Boolean;
var
  f:TForm;
  l:TLabel;
  Edit:Tedit;
  bok,bnok:TBitBtn;
begin
  F := TForm.Create(nil);
  l := TLabel.Create(f);
  l.Parent := f;
  l.Align := alTop;
  l.AlignWithMargins := true;
  l.Caption := APrompt;
  l.WordWrap := true;
  f.ClientWidth := l.Width + 20;


  Edit := Tedit.Create(f);
  Edit.Parent := f;
  Edit.Top := l.Top + l.Height + 10;
  Edit.Left := 10;
  Edit.Width := f.ClientWidth - 20;
  Edit.Text := Value;
  f.Caption := Acaption;
  bok := TBitBtn.Create(f);
  bok.Parent := F;
  bok.Caption := 'OK';
  bok.ModalResult := mrok;
  bok.Default := true;
  bnok:= TbitBtn.Create(f);
  bnok.Parent := F;
  bnok.Cancel := true;
  bnok.ModalResult := mrCancel;
  bnok.Caption := 'Abbrechen';
  bok.Top := Edit.Top + Edit.Height + 10;
  bnok.Top := Edit.Top + Edit.Height + 10;
  bok.Left := 10;
  bnok.Left := f.ClientWidth div 2 + 10;
  bok.Width := f.ClientWidth div 2 - 20;
  bnok.Width := f.ClientWidth div 2 - 20;
  f.ClientHeight := bok.Top + bok.Height + 10;
  f.Position := poScreenCenter;
  f.ShowModal;
  Result := F.ModalResult= mrok;
  Value := Edit.Text;
  f.Free;
end;

Luckie 13. Okt 2011 11:53

AW: Inputbox mit autmatischer Längenanpassung wie Messagebox
 
Mal was anderes aus der Sicht des Nutzers. Was soll ich denn da jetzt eingeben? Die Ziffer? Oder eine Bezeichnung? Wen nur eine Ziffer, wäre da ein Formular mit drei Optionsfeldern nicht einfacher? oder wenn eine Bezeichnung, wäre es da nicht einfacher eine Combobox oder Listbox mit den ganzen möglichen Bezeichnungen?

v2afrank 13. Okt 2011 12:15

AW: Inputbox mit autmatischer Längenanpassung wie Messagebox
 
Danke Bummi,
deine Funktion ist gekauft, auch wenn ich wie auch Luckie schon angemerkt hat auf ein neues Fenster zurückreife was die Funktion für den Anwender einfacher macht (Über eine Art Taskdialog).
Das ganze kam ursprünglich noch aus Doszeiten und da war eben so eine Eingabe 1,2,3 drin.

Jetzt bleibt nur noch das Problem mit dem neuen Verhalte der Inpuboxfunktion unter XE2, dafür mache ich aber lieber einen separaten Thread

DeddyH 13. Okt 2011 12:19

AW: Inputbox mit autmatischer Längenanpassung wie Messagebox
 
Zitat:

Zitat von v2afrank (Beitrag 1130240)
Danke Bummi,
deine Funktion ist gekauft

Dann setz aber besser noch einen Ressourcen-Schutzblock (try-finally) ein, gell? ;)

Luckie 13. Okt 2011 12:20

AW: Inputbox mit autmatischer Längenanpassung wie Messagebox
 
Zitat:

Zitat von v2afrank (Beitrag 1130240)
Das ganze kam ursprünglich noch aus Doszeiten und da war eben so eine Eingabe 1,2,3 drin.

Dann mach es doch jetzt richtig, wo du schon dabei bist es zu portieren, und nimm Optionsfelder (Radiobuttons).

DeddyH 13. Okt 2011 12:21

AW: Inputbox mit autmatischer Längenanpassung wie Messagebox
 
Oder eine ComboBox, die braucht ggf. weniger Platz.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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-2025 by Thomas Breitkreuz