Entwickler-Ecke
Sonstiges (Delphi) - Nicht-modales Infofenster mit dynamischer Grösse
galagher - Fr 29.05.09 18:09
Titel: Nicht-modales Infofenster mit dynamischer Grösse
Hallo!
Und wieder eine Frage!
Wie erzeuge ich ein nicht-modales Infofenster, dessen Grösse (=Breite) sich an den angegebenen Text anpasst?
Ein Dialogfeld erzeugen, auch ohne Buttons, kann ich. Aber ich möchte, dass lediglich ein Meldungsfenster sichtbar wird, das einen Text wie "Dateien werden kopiert, bitte warten." anzeigt, wobei der Text auch kürzer oder länger sein kann. Und während das Fenster sichtbar ist, wird kopiert oder was auch immer.
Das Fenster soll auch folgende Symbole anzeigen können:
mtCustom, mtInformation, mtConfirmation, mtError, mtWarning
... ihr wisst schon, was ich meine! :wink:
Also - ein Fenster, da aussieht wie zB. eine MessageBox, nur ohne Buttons und nicht modal.
jaenicke - Fr 29.05.09 18:23
Schau dir einmal CreateMessageDialog an, das sollte sein was du suchst. ;-)
galagher - Sa 30.05.09 13:58
Mit CreateMessageDialog erzeugt man ein modales Dialogfenster, oder? Ich werde wohl ein normales TForm nehmen und entsprechend anpassen müssen...
Trotzdem danke!
ffgorcky - Sa 30.05.09 14:24
Ja, wenn Du ein normales Fenster nimmst, dann würde ich sagen, dass Du LabelWieAuchImmerEsHeisst.Autosize:=true; setzt und dann bei FormMeldung.OnShow() dann guckst, wie groß das Label ist und das Form dann entsprechend angleichst.
Ich hoffe, dass das jetzt gerade in Deinem Sinne ist - oder?
jaenicke - Sa 30.05.09 15:50
galagher hat folgendes geschrieben : |
| Mit CreateMessageDialog erzeugt man ein modales Dialogfenster, oder? Ich werde wohl ein normales TForm nehmen und entsprechend anpassen müssen... |
Sag mal warum schaust du dir eigentlich nicht an was man dir vorschlägt... :autsch: Ich hatte schon verstanden was du machen willst...
Und falls deine F1-Taste kaputt ist, poste ich dir mal die Hilfe dazu...
| Zitat: |
Call CreateMessageDialog to create a message dialog that will be used several times in an application. CreateMessageDialog returns a dialog of the type specified by the DlgType parameter and with the buttons indicated by the Buttons parameter. Users can copy messages created using CreateMessageDialog to the clipboard by pressing Ctrl+C.
Note: CreateMessageDialog does not display the dialog form. The application must display this form when it is needed by calling its ShowModal method. |
Du bekommst also ein fertiges Formular (als TForm ganz normal) mit den ganzen Komponenten und Inhalten erzeugt und kannst es dann anzeigen (in deinem Fall mit Show statt ShowModal) und ggf. vorher verändern und mit weiteren Komponenten ergänzen...
galagher - Sa 30.05.09 23:15
jaenicke hat folgendes geschrieben : |
| Und falls deine F1-Taste kaputt ist, poste ich dir mal die Hilfe dazu... |
Noch funktioniert meine Tastatur...
Ich hab's mir angeschaut, und als ich dann das mit der ShowModal-Methode gelesen habe - naja, Show
Modal eben... Und da habe ich gedacht, das ist nicht, was ich brauche.
Ok, es funktioniert, aber auch wenn man keine Buttons anzeigt, ist die Höhe des Fensters so, als wären Buttons vorhanden. Nun kann man die Höhe zwar einstellen, aber auf welchen Wert? Wie soll ich die "Höhe" des Textes bekommen?
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var aForm: TForm; begin aForm := CreateMessageDialog('Message', mtInformation, []); aForm.Show; end; |
Ich habe mir in der Zwischenzeit eine normale TForm gebastelt.
Danke trotzdem!
jaenicke - Sa 30.05.09 23:21
Beispiel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| var MyDialog: TForm; MessageLabel: TLabel; begin MyDialog := CreateMessageDialog('Message', mtInformation, []); MessageLabel := MyDialog.FindComponent('Message') as TLabel; MyDialog.ClientHeight := MessageLabel.Top + MessageLabel.Height; MyDialog.Show; ... |
Hast du keine Delphiversion mit Quelltext? Dann installiere dir am besten
Turbo Delphi [
http://www.delphi-library.de/viewtopic.php?p=539975], denn da kannst du einfach den Quelltext anschauen und siehst da u.a., dass das erzeugte Label mit dem Text den Namen Message bekommt (und das ggf. größere Bild den Namen Image). ;-)
Delphi-Quelltext
1: 2: 3: 4:
| with TMessageForm(Result).Message do begin Name := 'Message'; ... |
galagher - So 31.05.09 11:31
Hab mir den Quelltext gar nicht angesehen, wollte schnell weiterkommen, hab nur "ShowModal" gelesen, und das war's.
*betroffen schau* :oops:
Nochmals danke, werde dann wohl den Dialog nutzen!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!