| Autor |
Beitrag |
landwehr
      
Beiträge: 46
WIN XP, WIN 7, WIN 8
Delphi 6, Delphi 2007, Delphi XE2
|
Verfasst: Fr 10.02.12 13:42
Hallo,
ich bin schier am verzweifeln!!!!
Ich habe in einer neuen Anwendung unter Delphi XE2 ein TDataModul hinzugefügt. Leider fehlt mit in der Tool-Palette die Dialoge. Wie kann ich diese hinzufügen, da ich unbedingt das TOpenDialog benötige?
Kann mir jemand helfen?
Gruß Walter
|
|
Sybok Factor
      
Beiträge: 50
Erhaltene Danke: 5
Win XP, Win Vista
Delphi 2010 Professional
|
Verfasst: Fr 10.02.12 15:08
Hallo Landwehr,
ich habe jetzt deine Frage mehrmals gelesen, verstehe sie aber trotzdem nicht.
Fehlen die Dialoge generell in deiner Palette? Dann hilft dir vielleicht rechte Maus auf der Palette > Palette zurücksetzen...
Oder nur beim Datenmodul (eher unwahrscheinlich)?
Viele Grüße
Sybok Factor
_________________ Jetzte michse verstehen dein Problem.
|
|
landwehr 
      
Beiträge: 46
WIN XP, WIN 7, WIN 8
Delphi 6, Delphi 2007, Delphi XE2
|
Verfasst: Fr 10.02.12 15:35
Hallo Sybok Factor,
sie fehlen nur im Datenmodul, bei normalen Formularen sind die Dialoge da. Wenn ich aus einer alten Anwendung das Datenmodul hinzufüge sind auch die Dialoge da, ich verstehe es nicht. Ei zurücksetzen hat nichts gebracht.
Gruß Walter
|
|
jaenicke
      
Beiträge: 19340
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 10.02.12 16:14
Kannst du den Dialog nicht einfach bei einem Formular kopieren und auf das Datenmodul einfügen?
|
|
landwehr 
      
Beiträge: 46
WIN XP, WIN 7, WIN 8
Delphi 6, Delphi 2007, Delphi XE2
|
Verfasst: Fr 10.02.12 16:21
Hallo jaenicke,
gehr nicht kommt die Meldung 'Klasse TOpenDialog nicht gefunden'.
|
|
jaenicke
      
Beiträge: 19340
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 10.02.12 16:39
Vielleicht ist das auch Absicht, das könnte ich nachher mal testen. Vom Prinzip her wäre das ja auch durchaus sinnvoll. Schließlich hat ein Datenmodul mit den Daten und nicht mit der Oberfläche zu tun...
Warum packst du den Dialog nicht einfach in die GUI? Sonst kannst du den ja auch manuell erstellen, das sollte ja in jedem Fall gehen.
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 10.02.12 17:01
landwehr hat folgendes geschrieben : | Hallo, ich bin schier am verzweifeln!!!!
Ich habe in einer neuen Anwendung unter Delphi XE2 ein TDataModul hinzugefügt. Leider fehlt mit in der Tool-Palette die Dialoge. Wie kann ich diese hinzufügen, da ich unbedingt das TOpenDialog benötige? |
Es ist in Delphi nicht vorgesehen, einen TOpenDialog in einem Datenmodul abzulegen. Das Datenmodul dient lediglich als Container für datensensitive Komponenten. Den TOpenDialog legst du auf deiner Form ab.
|
|
Sybok Factor
      
Beiträge: 50
Erhaltene Danke: 5
Win XP, Win Vista
Delphi 2010 Professional
|
Verfasst: Fr 10.02.12 17:51
Perlsau hat folgendes geschrieben: | | Es ist in Delphi nicht vorgesehen, einen TOpenDialog in einem Datenmodul abzulegen. Das Datenmodul dient lediglich als Container für datensensitive Komponenten. Den TOpenDialog legst du auf deiner Form ab. |
Naja, unter Delphi 2010 geht das und kann durchaus Sinn machen. Ich habe viele nichtvisuelle Komponenten in Datenmodule ausgelagert. Ein Dialog gehört da ja auch erstmal zu.
Leider habe ich keine Idee warum das Register plötzlich nicht mehr aufrufbar ist.
Viele Grüße
Sybok Factor
_________________ Jetzte michse verstehen dein Problem.
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 11.02.12 10:25
Moderiert von Narses: Komplett-Zitat des letzten Beitrags entfernt.
Für mich ist TOpenDialog eine visuelle Komponente, im Gegensatz z.B. zu TDataset, das tatsächlich eine nicht-visuelle Komponente darstellt. Auch wenn man TOpenDialog erst nach der Ausführung von .execute sieht, verfügt diese Komponente dennoch über visuelle Anteile und macht auch nur durch ihre Vidualität Sinn.
Davon abgesehen benötigt TOpenDialog einen Owner:
Delphi-Quelltext 1:
| OpenDlg := TOpenDialog.Create(FormMain); |
Um das im Datenmodul zu machen, müßtest du ja im Datenmodul unter USES die Form angeben, was ein schlechter Programmierstil wäre, denn in der Form wird ja meist schon das Datenmodul in die USES-Klausel aufgenommen.
Natürlich könnte man im Datenmodul alles mögliche ablegen, wenn es gestattet wäre. Das ist aber nicht der Sinn eines Datenmoduls. Dafür sollte man, um die Übersichtlichkeit seines Quellcodes zu gewährleisten, eine extra Unit verwenden. Die meisten Dateien, deren Dateinamen mittels OpenDialog ermittelt werden, werden ja nicht in irgend eine Komponente des Datenmoduls, sondern eher in die irgend einer Form eingelesen. Auch die Steuerung bzw. der Aufruf von TOpenDialog erfolgt meist von der Form aus und nicht irgendwoher vom Datenmodul. Daher finde ich es sinnvoll und richtig, im Datenmodul keinen TOpenDialog ablegen zu können.
|
|
jaenicke
      
Beiträge: 19340
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 11.02.12 10:57
Perlsau hat folgendes geschrieben : | | Es ist in Delphi nicht vorgesehen, einen TOpenDialog in einem Datenmodul abzulegen. |
Um das mal klar zu stellen:
Bis Delphi XE ging das problemlos. (Von den Konzeptproblemen, die in den Projekten dann vorliegen dürften, mal abgesehen.)
In XE2 lassen sich ältere Projekte, die diese Komponenten auf einem Datenmodul haben, aber öffnen. Und dort sind die Dialoge auch in der Toolpalette sichtbar. Woran genau das unterschieden wird, weiß ich nicht (und ist mir auch egal  ), aber es scheint gut zu funktionieren. In einem in XE2 erstellten Projekt sind die Dialoge jedenfalls bei einem Datenmodul nicht in der Toolpalette, das stimmt.
|
|
Sybok Factor
      
Beiträge: 50
Erhaltene Danke: 5
Win XP, Win Vista
Delphi 2010 Professional
|
Verfasst: Di 14.02.12 13:15
Perlsau hat folgendes geschrieben : |
Natürlich könnte man im Datenmodul alles mögliche ablegen, wenn es gestattet wäre. Das ist aber nicht der Sinn eines Datenmoduls. Dafür sollte man, um die Übersichtlichkeit seines Quellcodes zu gewährleisten, eine extra Unit verwenden. Die meisten Dateien, deren Dateinamen mittels OpenDialog ermittelt werden, werden ja nicht in irgend eine Komponente des Datenmoduls, sondern eher in die irgend einer Form eingelesen. Auch die Steuerung bzw. der Aufruf von TOpenDialog erfolgt meist von der Form aus und nicht irgendwoher vom Datenmodul. Daher finde ich es sinnvoll und richtig, im Datenmodul keinen TOpenDialog ablegen zu können. |
Hallo Perlsau,
kann leider erst heute dazu antworten und möchte definitiv keine programmiertechnischen Grabenkämpfe führen. Aber stelle dir folgende Situation vor: Du brauchst den TOpenDialog mit diversen anderen Prozeduren in Fenstern mit verschiedenem Aufbau.
Eine Extra Unit bedeutet, ich muss vieles von Hand machen, was ich bei einer abgelegten Komponente einfach konfigurieren kann.
Die von dir vorgeschlagene Alternative interpretiere ich so, dass ich nun auf jedem Formular bei den Dialog benötige eine TOpenDialog Komponente ablege und die benötigten Bearbeitungsschritte dupliziere (und wenn es nur Prozeduraufrufe sind). Das halte ich für eine fragwürdige Konzeption.
Das Datenmodul war ein schöner Mittelweg, jetzt müsste ab XE2 ein Extra Formular erzeugt werden.
Für den TE käme als Alternative eventuell in Frage auf die Standardaction "TFileOpen" im Actionmanager oder der Actionlist umzuschwenken.
_________________ Jetzte michse verstehen dein Problem.
|
|
|