TOpenDialog
-
Hallo zusammen,
kann das Execute() des OpenDialog nur in einer __fastcall - Methode aufgerufen werden? Wenn nein, warum öffnet sich der Dialog nicht in einer selbst geschriebenen Methode?
Muss man noch etwas besonderes hinzufügen?
-
__fastcall hat damit nichts zu tun
zeig mal den relevanten Quellcode
-
int iEreignis = Application->MessageBoxA("Es konnte keine Initialisierungsdatei " "festgestellt werden.\nBitte geben sie " "den korrekten Dateipfad für die Datei " "\"TimeCollect.ini\" an", "MELDUNG!", MB_OKCANCEL); if( iEreignis == 1 ) { if( OpenDialog->Execute() ) { m_asINIPfad = OpenDialog->FileName; } } else { exit(0); }
-
Er geht zwar bis an die Stelle des Execute(), aber er zeigt nicht den Dialog auf dem Bildschirm an!
-
Wenn ich den gleichen Code in eine __fascall - methode setze so geht es. Doch wenn ich es versuche in einer Klassenmethode auszuführe die ich selbst geschrieben habe, dann macht er das nicht!
-
Wenn deine "selbstgeschriebene" Methode KEIN Mitglied der Klasse des Formulars ist,und du die Komponente TOpendialog in dein Formular gezogen hast, musst du den Formularname voransetzen:
Form1->Opendialog1->Execute();
-
Warum heisst das bei dir MessageBoxA??
-
Das geht trotzdem nicht! Er will einfach nicht angezeigt werden.
Habe jetzt mal dein Tipp verfolgt und habe den Formnamen davor gesetzt.
Kann es auch noch an etwas anderes liegen?Weiß auch nicht warum das bei mir MessageBoxA heißt. Ein normales MessageBox gibt es bei mir garnicht!
-
Da wird mehr Code und Information benötigt:
Wo und wie hast du TOpenDialog erzeugt? (Manuell oder per Komponente)
Zeige die komplette Funktion, in der du dann TOpendialog aufrufst (von vorne bis hinten)
-
Der TOpenDialog habe ich als Komponente auf mein Form gezogen!
Hier mal die Funktion:
void TAnmeldeFormular::ueberpruefeINIExistenz() { m_asINIPfad = "\E:\\TIME_COLLECT_ENTWICKLUNG\\TimeCollect\\TimeCollect.ini"; if (FileExists(m_asINIPfad)) { ; } else { int iEreignis = Application->MessageBoxA("Es konnte keine Initialisierungsdatei " "festgestellt werden.\nBitte geben sie " "den korrekten Dateipfad für die Datei " "\"TimeCollect.ini\" an", "MELDUNG!", MB_OKCANCEL); if( iEreignis == 1 ) { if( OpenDialog->Execute() ) { m_asINIPfad = AnmeldeFormular->OpenDialog->FileName; } } else { exit(0); } } }Und hier ein Klassenausschnitt:
class TAnmeldeFormular : public TForm { __published: // Von der IDE verwaltete Komponenten TPanel *Panel1; TPanel *Panel2; TImage *Image; TLabel *Label1; TLabel *Label2; TLabel *Label3; TEdit *EditPasswort; TLabel *Label4; TLabel *Label5; TButton *ButtonOK; TButton *ButtonAbbruch; TLabel *Label6; TLabel *Label7; TLabel *LabelKontoAendern; TPanel *Panel3; TEdit *EditBenutzer; [b]TOpenDialog *OpenDialog;[/b] void __fastcall ButtonAbbruchClick(TObject *Sender); void __fastcall ButtonOKClick(TObject *Sender); void __fastcall EditPasswortKeyPress(TObject *Sender, char &Key); void __fastcall LabelKontoAendernMouseEnter(TObject *Sender); void __fastcall LabelKontoAendernMouseLeave(TObject *Sender); void __fastcall LabelKontoAendernClick(TObject *Sender); .... };
-
Kann nix erkennen bezüglich des Dialoges
Schicke mir das Projekt mal zu cecke@marquardtnet.info
-
Hab das Problem erst mal umgangen, mache da aber morgen weiter! Werde mich dann nochmal melden! Danke aber schon mal für die Hilfe!
Gruß