AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Inputbox mit autmatischer Längenanpassung wie Messagebox
Thema durchsuchen
Ansicht
Themen-Optionen

Inputbox mit autmatischer Längenanpassung wie Messagebox

Ein Thema von v2afrank · begonnen am 13. Okt 2011 · letzter Beitrag vom 13. Okt 2011
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Inputbox mit autmatischer Längenanpassung wie Messagebox

  Alt 13. Okt 2011, 10:50
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
571 Beiträge
 
Delphi XE2 Professional
 
#12

AW: Inputbox mit autmatischer Längenanpassung wie Messagebox

  Alt 13. Okt 2011, 10:59
Sieht gut aus. Danke
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#13

AW: Inputbox mit autmatischer Längenanpassung wie Messagebox

  Alt 13. Okt 2011, 11:02
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;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi (13. Okt 2011 um 11:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

AW: Inputbox mit autmatischer Längenanpassung wie Messagebox

  Alt 13. Okt 2011, 11:53
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
571 Beiträge
 
Delphi XE2 Professional
 
#15

AW: Inputbox mit autmatischer Längenanpassung wie Messagebox

  Alt 13. Okt 2011, 12:15
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Inputbox mit autmatischer Längenanpassung wie Messagebox

  Alt 13. Okt 2011, 12:19
Danke Bummi,
deine Funktion ist gekauft
Dann setz aber besser noch einen Ressourcen-Schutzblock (try-finally) ein, gell?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#17

AW: Inputbox mit autmatischer Längenanpassung wie Messagebox

  Alt 13. Okt 2011, 12:20
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).
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Inputbox mit autmatischer Längenanpassung wie Messagebox

  Alt 13. Okt 2011, 12:21
Oder eine ComboBox, die braucht ggf. weniger Platz.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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