AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit OpenDialog

Ein Thema von xi.xi · begonnen am 20. Jan 2010 · letzter Beitrag vom 17. Mai 2013
Antwort Antwort
David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#1

AW: Problem mit OpenDialog

  Alt 15. Jun 2010, 18:09
@maddin1502:
1.
um auf Post #19 zurückzukommen:
Zitat:
Ich nutze es immer so, weil nun mal der Opendialog auf Form1 liegt
...
(heißt ja nun auch nicht TForm1.oeffnen)...
Der Opendialog liegt nicht auf Form1, sondern gehört zum Objekt TForm1. Jedesmal wenn du eine Instanz von TForm1 erzeugst d.h. den Speicher für das Objekt bereitstellst und und und,
Das machst du mit:
Application.CreateForm(TForm1, Form1); dann wird in dieser Instanz auch ein neuer Opendialog erzeugt. Das ist ja gerade der Witz an OOP.

Dein erstens Posting kann nicht funktionieren weil:
form1.OpenDialog1.Execute heist: du willst den OpenDialog1 aus der Variable form1 ausführen. In der Deklaration ist der OpenDialog1 aber privat:
Delphi-Quellcode:
  TForm1 = class(TForm)
    ...
    OpenDialog1: TOpenDialog;
    ...
Daher kein Zugriff. Ist ja auch so gewollt.

2. zu #26:
Das ist nun wirklich ein neuer Thread, aber um die Frage zu beantworten.
Nein, du kannst kein Objekt zerstören und dann aus dem zerstörten Objekt heraus sichselber wieder aufmachen. Denk' mal drüber nach!!! Das einzig was du machen kannst, was aber noch unsauberer ist, du kannst ein Objekt erzeugen, dann dein MainForm schließen und es dann von dem Objekt wieder öffnen lassen. ABER:
Du solltes immer eine Inizialisierungsmethode schreiben die alles wohldefiniert anfangen lässt.

Gruß David
  Mit Zitat antworten Zitat
maddin1502

Registriert seit: 19. Aug 2009
6 Beiträge
 
#2

AW: Problem mit OpenDialog

  Alt 15. Jun 2010, 20:18
@David Martens
Ich will jetzt nicht klugscheißen, aber bei mir geht das mit dem "form1.opendialog1.execute".
Habs gerade nochmal mit einen meiner älteren Programme getestet:

Code:
if form1.opendialog1.Execute then
begin
        assignfile(f,form1.opendialog1.FileName);
        reset(f);
        if filesize(f)>0 then
        begin
        read(f,ergebnisse);
        form1.StringGrid1.ColCount:=strtoint(ergebnisse.zellen[0]);
                for i:=1 to (stringgrid1.RowCount) do
                begin
                        inhalt:=ergebnisse.Zellen[i];
                        for j:=1 to (stringgrid1.ColCount-1) do
                        begin
                                if pos('/',inhalt)=0 then
                                begin
                                stringgrid1.Cells[j,i-1]:=Inhalt;
                                end;

                                if pos('/',inhalt)>0 then
                                begin
                                stringgrid1.Cells[j,i-1]:=copy(inhalt,1,pos('/',inhalt)-1);
                                delete(inhalt,1,pos('/',inhalt));
                                end;
                        end;
                end;
        end;
        closefile(f);
end;
Vielleicht liegt es daran, dass meine Programme einfacher strukturiert sind. Das mit dem "Objekt orientiert Programmieren" versteh ich immer noch nicht so genau, will einfach nicht in meine Rübe rein, was das nun genau heißt.

Zitat:
Nein, du kannst kein Objekt zerstören und dann aus dem zerstörten Objekt heraus sichselber wieder aufmachen. Denk' mal drüber nach!!!
Das ist mir schon klar, dass ein zerstörtes Objekt sich nicht selber weiderherstellen kann. Zu dem Punkt wo der Wiederherstellungsbefehl kommen müsste, gibts ja nichts mehr, wo dieser Befehl stehen könnte (Der wäre dann auch mit zerstört).
Aber jetzt mal rein theoretisch, könnte sich ein Form selbst nochmal aufrufen? Ist jetzt so gedacht, dass man zuerst einen "Zwilling" öffnet und das alte Form dann schließt.

Geändert von maddin1502 (15. Jun 2010 um 20:22 Uhr)
  Mit Zitat antworten Zitat
David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#3

AW: Problem mit OpenDialog

  Alt 17. Jun 2010, 14:45
ok, nochmal fürs Verständnis: versuch es mal hiermit http://www.delphi-treff.de/object-pa...torientierung/
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
669 Beiträge
 
Delphi 12 Athens
 
#4

AW: Problem mit OpenDialog

  Alt 17. Jun 2010, 15:01
Hi David,

auch wenn wir jetzt ein bisschen weg vom Thema sind, muss ich deinen vorletzten Post doch noch mal korrigieren, sonst ist der arme Maddin ganz verwirrt und wundert sich, warum seine Programme überhaupt funktionieren.

Dein erstens Posting kann nicht funktionieren weil:
form1.OpenDialog1.Execute heist: du willst den OpenDialog1 aus der Variable form1 ausführen. In der Deklaration ist der OpenDialog1 aber privat:
Delphi-Quellcode:
  TForm1 = class(TForm)
    ...
    OpenDialog1: TOpenDialog;
    ...
Daher kein Zugriff. Ist ja auch so gewollt.
Was du schreibst, stimmt so aus zwei Gründen eigentlich nicht:
  1. Wenn du in Delphi neue Komponenten hinzufügst, dann erscheinen die im Quellcode an einer Stelle in der Klassendefinition, bevor die Sichtbarkeit explizit angegeben wurde. Damit sind sie dann nicht "private", sondern "published" oder "public", also sichtbar und von außen verfügbar.
  2. Selbst wenn der OpenDialog1 nur "private" wäre, dann wäre er innerhalb der gleichen Unit auch von außen durchaus sichtbar, also auch hier keine Probleme für den Code von Maddin.

Das macht zwar Maddins bisheriges Vorgehen nicht unbedingt richtiger, aber funktionieren tut es bei kleinen Projekten ja erst mal schon.

Ich hoffe, dass das jetzt nicht zu klugsch***erisch rüberkam, ich wollte nur verhindern, dass Maddin noch stärker verwirrt wird, als eh schon.

Bis denn
Bommel
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:21 Uhr.
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