AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Klasse soll Anwendung nur bei best. Änderung benachrichtigen

Klasse soll Anwendung nur bei best. Änderung benachrichtigen

Ein Thema von Sunshine21 · begonnen am 26. Jun 2008 · letzter Beitrag vom 27. Jun 2008
Antwort Antwort
Seite 5 von 6   « Erste     345 6   
Benutzerbild von spaxxn
spaxxn

Registriert seit: 19. Nov 2004
253 Beiträge
 
Delphi XE2 Enterprise
 
#41

Re: Klasse soll Anwendung nur bei best. Änderung benachricht

  Alt 27. Jun 2008, 09:21
Ich darf hier in der Firma keine Dateien downloaden. Du müsstest mir also den Code posten oder jemand anderes *zu DeddyH schiel* müsste freundlicherweise mal das Projekt downloaden und kompilieren.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#42

Re: Klasse soll Anwendung nur bei best. Änderung benachricht

  Alt 27. Jun 2008, 09:26
Ich kann hier keine Rar-Archive öffnen, das kann also Mittag werden.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Sunshine21

Registriert seit: 26. Jun 2008
27 Beiträge
 
#43

Re: Klasse soll Anwendung nur bei best. Änderung benachricht

  Alt 27. Jun 2008, 09:48
Oh sorry wollte nur den Thread nicht wieder in die Länge ziehen.

Unit1:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Menus;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;

    procedure FormCreate(Sender: TObject);
    procedure DoChange;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses TestClass;

{$R *.dfm}

var
     myClass : TMyclass;

//Programmstart
procedure TForm1.FormCreate(Sender: TObject);
begin
    myClass := TMyclass.Create;
    myClass.OnChange_Func := DoChange;
end;


procedure TForm1.DoChange;
begin
  ShowMessage('Status geändert');
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
    myClass.Timer.enabled := NOT myClass.Timer.enabled;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
  myClass.Status := NOT myClass.Status
end;


end.
Klasse:
Delphi-Quellcode:
unit Testclass;

interface

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Forms, Dialogs,
    StdCtrls, WinSock, ActiveX, ComObj, ExtCtrls;

type
    TOnChange_Proc = procedure() of object;
    TMyClass = class(TObject)

    private
    FTimer : TTimer;
    FStatus : Boolean;
    FOnChange : TOnChange_Proc;

    procedure OnChange;
    function getAvailable: Boolean;
    procedure testTimer(Sender : TObject);
    procedure setStatus(value: Boolean);

    public
    constructor Create;
    destructor destroy; override;
    property OnChange_Func : TOnChange_Proc read FOnChange write FOnChange;
    property Status : Boolean read FStatus write setStatus;
    property Timer : TTimer read FTimer write FTimer;
end;

implementation

constructor TMyClass.Create;
begin
inherited;
    FTimer := TTimer.Create(nil);
    FTimer.enabled := false;
    FTimer.Interval := 1000;
    FTimer.OnTimer := testTimer;
    FOnChange := nil;
end;

destructor TMyClass.Destroy;
begin
    FTimer.Free;
    inherited;
end;

procedure TMyClass.OnChange;
begin
  if Assigned(FOnChange) then
    FOnChange;
end;

procedure TMyClass.setStatus(value: Boolean);
begin
  FStatus := value;
  if Assigned(FOnChange) then
    FOnChange;
end;

procedure TMyClass.testTimer(Sender:TObject);
begin
    GetAvailable;
    onchange;
end;

function TMyClass.GetAvailable: Boolean;
begin
  if FStatus = true then
  result := true
  else
  result := false
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#44

Re: Klasse soll Anwendung nur bei best. Änderung benachricht

  Alt 27. Jun 2008, 09:55
Hab mal in Notepad etwas editiert, daher ungetestet:
Delphi-Quellcode:
unit Testclass;

interface

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Forms, Dialogs,
    StdCtrls, WinSock, ActiveX, ComObj, ExtCtrls;

type
    TOnChange_Proc = procedure() of object;
    TMyClass = class(TObject)

    private
    FTimer : TTimer;
    FStatus, OldStatus : Boolean;
    FOnChange : TOnChange_Proc;

// procedure OnChange;
    function getAvailable: Boolean;
    procedure testTimer(Sender : TObject);
    procedure setStatus(value: Boolean);

    public
    constructor Create;
    destructor destroy; override;
    property OnChange_Func : TOnChange_Proc read FOnChange write FOnChange;
    property Status : Boolean read FStatus write setStatus;
    property Timer : TTimer read FTimer write FTimer;
end;

implementation

constructor TMyClass.Create;
begin
inherited;
    FTimer := TTimer.Create(nil);
    FTimer.enabled := false;
    FTimer.Interval := 1000;
    FTimer.OnTimer := testTimer;
    FOnChange := nil;
    FStatus := true;
    OldStatus := true;
end;

destructor TMyClass.Destroy;
begin
    FTimer.Free;
    inherited;
end;

{procedure TMyClass.OnChange;
begin
  if Assigned(FOnChange) then
    FOnChange;
end; }


procedure TMyClass.setStatus(value: Boolean);
begin
  FStatus := value;
  if Assigned(FOnChange) then
    FOnChange;
end;

procedure TMyClass.testTimer(Sender:TObject);
begin
    GetAvailable;
// onchange;
end;

function TMyClass.GetAvailable: Boolean;
begin
  if FStatus <> OldStatus then
    begin
      OldStatus := FStatus;
      if Assigned(FOnChange) then
        FOnChange;
    end;
end;

end.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von spaxxn
spaxxn

Registriert seit: 19. Nov 2004
253 Beiträge
 
Delphi XE2 Enterprise
 
#45

Re: Klasse soll Anwendung nur bei best. Änderung benachricht

  Alt 27. Jun 2008, 09:57
Löst aber glaube ich nicht deas Exception-Problem.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#46

Re: Klasse soll Anwendung nur bei best. Änderung benachricht

  Alt 27. Jun 2008, 10:04
Abgesehen davon, dass MyClass nirgend freigegeben wird, kann ich rein optisch nichts Verdächtiges entdecken. Da hilft nur durchsteppen und die Zeile mit der Exception zu lokalisieren. Ich habe gerade kein Delphi zur Verfügung, kann das daher nicht selbst übernehmen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Sunshine21

Registriert seit: 26. Jun 2008
27 Beiträge
 
#47

Re: Klasse soll Anwendung nur bei best. Änderung benachricht

  Alt 27. Jun 2008, 10:07
Beim Steppen gelang ich in Unit1 jenachdem welchen Button ich drücke zur Procedure wo der Timer enabled wird
procedure TForm1.Button1Click(Sender: TObject);
begin
myClass.Timer.enabled := NOT myClass.Timer.enabled;
end;

oder der Status geändert wird

procedure TForm1.Button2Click(Sender: TObject);
begin
myClass.Status := NOT myClass.Status
end;

Er gibt mir auch eine Meldung dass es Probleme mit dem Zugriff gibt. Die Properties stimmen doch, oder?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#48

Re: Klasse soll Anwendung nur bei best. Änderung benachricht

  Alt 27. Jun 2008, 10:13
Ich habe anscheinend Tomaten auf den Augen, ich kann nämlich nichts entdecken

[edit] Wenn ich wieder Delphi zur Verfügung habe (heute Mittag), schaue ich mir das nochmal mit dem Debugger an. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von spaxxn
spaxxn

Registriert seit: 19. Nov 2004
253 Beiträge
 
Delphi XE2 Enterprise
 
#49

Re: Klasse soll Anwendung nur bei best. Änderung benachricht

  Alt 27. Jun 2008, 10:23
Sunshine? Hast du bei dem zweiten Projekt einfach per Copy/Paste die Elemente aus dem erstem Projekt übernommen?

Edit: Ich glaube ich weiss wo dein Problem hängt. Du hast das neue Projekt erstellt und die FormCreate prozedur nur kopiert. Diese ist aber wahrscheinlich nicht an das OnCreate vom Form gebunden und darum wird die Instanz deiner TmyClass nicht erzeugt. Dann rennst du natürlich in eine Verletzung.

Das wäre das einzige was ich mir denken könnte.
  Mit Zitat antworten Zitat
Sunshine21

Registriert seit: 26. Jun 2008
27 Beiträge
 
#50

Re: Klasse soll Anwendung nur bei best. Änderung benachricht

  Alt 27. Jun 2008, 10:40
Oh Gott, das wars! Dachte das einbinden der Buttons würde reichen. Tut mir wirklcih Leid, dass ich euch wegen sowas beschäftigt habe! Endlich gehts weiter. Mal schaun wie weit ich jetzt komme
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:35 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