AGB  ·  Datenschutz  ·  Impressum  







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

Procedure nicht sichtbar...

Ein Thema von bluescreen25 · begonnen am 24. Feb 2006 · letzter Beitrag vom 24. Feb 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Luckie
Luckie

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

Re: Procedure nicht sichtbar...

  Alt 24. Feb 2006, 18:42
Natürlich sind sie das:
Delphi-Quellcode:
unit Unit2;

interface

uses
  Dialogs;

type
  TDummy = class(TObject)
  private
    procedure Foobar;
  public
    procedure DoSomeThing;
  end;

implementation

procedure TDummy.DoSomething;
begin
  ShowMessage('Kuckuck');
end;

procedure TDummy.Foobar;
begin
  ShowMessage('Foobar');
end;

end.
Delphi-Quellcode:
uses
  Unit2;

procedure TForm1.Button1Click(Sender: TObject);
var
  Dummy: TDummy;
begin
  Dummy := TDummy.Create;
  try
    //Dummy.Foobar; // geht nicht da private
    Dummy.DoSomeThing; // geht da public
  finally
    FreeAndNil(Dummy);
  end;
end;
Du solltest dir mal das Tutorial durchlesen, dann weißt du auch, was es mit den Sichtbarkeiten auf sich hat.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Procedure nicht sichtbar...

  Alt 24. Feb 2006, 19:11
Ich habe das Ganze nochmal überdacht und den Aufruf der proceduren global geregelt. Dank eurer Hilfe sollte es hoffentlich so korrekt sein:

Delphi-Quellcode:
unit ShutDown;

interface

uses
  Windows, Messages, SysUtils, Classes;

type
  TShutDown = class(TObject)
  private
    procedure GetPrivileges;
    procedure Shutdown(PowerOff,Force :boolean);
    procedure Ruhezustand(Force :boolean);
    procedure Standby(Force :boolean);
    procedure Logoff(Force : boolean);
    procedure Restart(Force :boolean);
  public
    procedure beenden;
end;



implementation
uses Config,main_menue;


procedure TShutDown.GetPrivileges; //Rechte um runterzufahren holen.
...
...
...
procedure TShutDown.beenden;
begin
  case config_frm.ShutdownSelect.ItemIndex of
  0: begin
     Main_frm.Close;
     end;
  1: begin
     Main_frm.Close;
     Shutdown(true,config_frm.ShutDown_force_select.Checked);
     end;
  2: begin
     Ruhezustand(config_frm.ShutDown_force_select.Checked);
     end;
  3: begin
     Standby(config_frm.ShutDown_force_select.Checked);
     end;
  4: begin
     Main_frm.Close;
     Restart(config_frm.ShutDown_force_select.Checked);
     end;
  end;
end;
der Aufruf aus der anderen Form/Unit dann:

Delphi-Quellcode:
procedure Tmediaplayer_frm.Image14Click(Sender: TObject);
var
  SShutDown: TShutDown;
begin
  SShutDown := TShutDown.Create;
  try
    SShutDown.beenden;
  finally
    FreeAndNil(SShutDown);
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Procedure nicht sichtbar...

  Alt 24. Feb 2006, 19:15
Nein, das ist immer nochnicht korrekt. Was hat die Unit deines Formulares in der Unit deiner Klasse zu suchen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: Procedure nicht sichtbar...

  Alt 24. Feb 2006, 19:20
Zitat von Luckie:
Nein, das ist immer nochnicht korrekt. Was hat die Unit deines Formulares in der Unit deiner Klasse zu suchen?
Stimmt , habe es oben im Code editiert. Du siehst aber auch ALLES !
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Procedure nicht sichtbar...

  Alt 24. Feb 2006, 19:24
Die ist ja immer noch da drinne: Config Die Klass eist somit immer noch abhängig von deiner Form und das ist unsauber und das macht man nicht. Wie es richtig geht hab eich dir in meinem Beispiel gezeigt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Procedure nicht sichtbar...

  Alt 24. Feb 2006, 19:46
Zitat von Luckie:
Die ist ja immer noch da drinne: Config Die Klass eist somit immer noch abhängig von deiner Form und das ist unsauber und das macht man nicht. Wie es richtig geht hab eich dir in meinem Beispiel gezeigt.
Nun ja, das ist aber jetzt etwas sehr eng gesehen. Ich habe den Aufruf in der "mediaplayer_frm" unabhängig von der Klasse gemacht, so wie du es gezeigt hast.

Das die "Config_frm" jetzt noch in der Implementation der Klasse steht, liegt ja daran, das ich die Case-Abfrage ja mit in die Unit gepackt habe und mir aus der "Config_frm" die Auswahl der Radiogroup (wie beendet werden soll) hole.

Somit habe ich alles mit einer procedure (SShutDown.beenden erschlagen.
Du meinst jetzt wahrscheinlich, das ich ALLE proceduren aus den Forms heraus ansprechen soll, um die Unit sauber zu halten. Da müsste ich doch wiedrum alle proceduren in Public setzen.

Der Aufruf aus weiteren Forms ist doch so auch schneller,oder???? In einer Unit muss ich es ja global einsetzen, wegen der Möglichkeit der Wiederverwendung.

Oder bin ich wieder auf dem falschen Dampfer ?
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#17

Re: Procedure nicht sichtbar...

  Alt 24. Feb 2006, 19:53
Wie wäre es, wenn due es so in der Art machst:
Delphi-Quellcode:
uses Shutdown, ConfigForm;

procedure TMainForm.Beenden;
var
  ShutdownObj: TShutdown;
begin
  ShutdownObj := TShutdown.Create;
  try
    case config_frm.ShutdownSelect.ItemIndex of
      0: Close;
      1: ShutdownObj.Shutdown (...);
      2: ...
    end;
  finally
    FreeAndNil (ShutdownObj);
  end;
end;
  Mit Zitat antworten Zitat
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: Procedure nicht sichtbar...

  Alt 24. Feb 2006, 20:24
Zitat von jfheins:
Wie wäre es, wenn due es so in der Art machst:
Delphi-Quellcode:
uses Shutdown, ConfigForm;

procedure TMainForm.Beenden;
var
  ShutdownObj: TShutdown;
begin
  ShutdownObj := TShutdown.Create;
  try
    case config_frm.ShutdownSelect.ItemIndex of
      0: Close;
      1: ShutdownObj.Shutdown (...);
      2: ...
    end;
  finally
    FreeAndNil (ShutdownObj);
  end;
end;
Das habe ich mal so umgesetzt, funktioniert und ist hoffentlich jetzt einwandfrei....lol

Delphi-Quellcode:
unit ShutDown;

interface

uses
  Windows, Messages, SysUtils, Classes;

type
  TShutDown = class(TObject)
  private
    procedure GetPrivileges;
  public
    procedure Shutdown(PowerOff,Force :boolean);
    procedure Ruhezustand(Force :boolean);
    procedure Standby(Force :boolean);
    procedure Logoff(Force : boolean);
    procedure Restart(Force :boolean);
end;

implementation


procedure TShutDown.GetPrivileges; //Rechte um runterzufahren holen.
...
...
eine globale Procedure in der Main_frm:

Delphi-Quellcode:
procedure TMain_frm.MMPlayer_beenden;
var
  SShutDown: TShutDown;
begin
   SShutDown := TShutDown.Create;
 try
  case config_frm.ShutdownSelect.ItemIndex of
  0: begin
       Close;
     end;
  1: begin
       Close;
       SShutDown.Shutdown(true,config_frm.ShutDown_force_select.Checked);
     end;
  2: begin
       SShutDown.Ruhezustand(config_frm.ShutDown_force_select.Checked);
     end;
  3: begin
       SShutDown.Standby(config_frm.ShutDown_force_select.Checked);
     end;
  4: begin
       Close;
       SShutDown.Restart(config_frm.ShutDown_force_select.Checked);
     end;
  end;
 finally
    FreeAndNil (SShutDown);
 end;
end;
ein Beispielaufruf:

Delphi-Quellcode:
procedure Tmediaplayer_frm.Image14Click(Sender: TObject);
begin
  Main_frm.MMPlayer_beenden;
end;
  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 05:29 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