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
Thema durchsuchen
Ansicht
Themen-Optionen

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 3 von 6     123 45     Letzte »    
Benutzerbild von spaxxn
spaxxn

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

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

  Alt 26. Jun 2008, 13:15
Dafür sorgfältiger
  Mit Zitat antworten Zitat
Sunshine21

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

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

  Alt 26. Jun 2008, 13:45
Denek ich bin jetzt schon näher dran allerdings bekomme ich momentan die Fehlermeldung "Liste der Parameter ist unterschiedlich". Was mich (unter sehr viel anderem) noch stutzig macht ist in der Klasse am Anfang OnChange_Proc = procedure() of object; kommt da nicht noch was in die Klammer?


Hab hier nochmal beides

Formular:


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(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);

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

var
  Form1: TForm1;

implementation

uses TestClass;
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 spaxxn
spaxxn

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

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

  Alt 26. Jun 2008, 13:47
Zitat von Sunshine21:
    procedure DoChange;     OnChange_Proc = procedure of object;
So müsste das gehen! War ein wenig in Gedanken, Aber DeddyH hats getroffen

Grund: Im Hauptform wurde Sender als Parameter übergeben, aber vom OnChange gar nicht angefordert. Mal in normalem deutsch ausgedrückt...
  Mit Zitat antworten Zitat
Sunshine21

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

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

  Alt 26. Jun 2008, 14:05
Hi spaxxn, also irgendwas ist scheinbar immer noch faul denn jetzt kann das Formular nicht mehr erstellt werden.
Zitat:
"...es ist eine Exception der Klasse EResNotFound aufgetreten. Meldung: 'Ressource TForm1 wurde nicht gefunden"
Habe auch schon ein neues Projekt gestartet doch der Fehler bleibt.

Hab im Hauptform

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
    myClass := TMyclass.Create;
    myClass.OnChange_Func := DoChange;
end;
und in der Klasse

Delphi-Quellcode:
type
    TOnChange_Proc = procedure of object;
  Mit Zitat antworten Zitat
Benutzerbild von spaxxn
spaxxn

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

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

  Alt 26. Jun 2008, 14:10
Moment
Zitat von Sunshine21:
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;
hier fehlt folgendes:
{$R *.dfm} dies bindet die Formular Resourcen ein. Warum das bei dir fehlt, kann ich dir nicht sagen.
Zitat von Sunshine21:
Delphi-Quellcode:

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.
  Mit Zitat antworten Zitat
Sunshine21

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

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

  Alt 26. Jun 2008, 14:33
Zitat von spaxxn:
Moment
hier fehlt folgendes:
{$R *.dfm}
[/quote]

Ups wie ist das denn schon wieder passiert?

Aber es nimmt kein Ende ... es ist zum Mäuse melken. Jetzt geht mein Timer auf einmal nicht mehr und ich finde einfach nicht heraus woran es liegt. Ich glaube ich muss eine Pause machen und später nocheinmal schaun denn mir qualmt der Schädel. Ich melde mich aber auf jeden Fall nochmal um zu berichten ob das TestEvent auch wirklich läuft.
  Mit Zitat antworten Zitat
Benutzerbild von spaxxn
spaxxn

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

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

  Alt 26. Jun 2008, 14:41
Was macht denn der Timer bzw. was macht er nicht? Woran machst du fest, das er nicht mehr geht?

Quellcodetechnisch würde ich sagen, dass der rennen müsste.
  Mit Zitat antworten Zitat
Sunshine21

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

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

  Alt 26. Jun 2008, 14:50
Also ich hab ja den Button 1 mit dem ich ihn starte. Mit FTimer.OnTimer := testTimer; rufe ich ja dann zyklisch testTimer auf und da hab ich mal ne showmessage zum testen eingebaut. Das ging heute auch schon mal Nur jetzt kommt da nix mehr geschweige denn die gewünschte Eventmeldung. Hm, aber wenn du schon nix siehst... kompiliert hast du es aber noch nicht oder?
  Mit Zitat antworten Zitat
Benutzerbild von spaxxn
spaxxn

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

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

  Alt 26. Jun 2008, 14:51
Ich schnapp mir mal kurz den Quelltext.

Edit: Bei mir geht es!


Da die dfm nicht eingebunden war, guck mal bitte nach, ob OnClick bei den beiden Buttons überhaupt noch gebunden ist.
  Mit Zitat antworten Zitat
Sunshine21

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

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

  Alt 26. Jun 2008, 16:22
Juhu! Jetzt geht es bei mir auch. Endlich gehts weiter! Mal schaun ob ich den Rest alleine hinbekomme.

Jedenfalls hast du mir den Tag gerettet, 1001 Dank!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    


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 18:55 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