AGB  ·  Datenschutz  ·  Impressum  







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

prozeduraufruf bei programmstart?

Ein Thema von Nothine · begonnen am 6. Sep 2004 · letzter Beitrag vom 6. Sep 2004
Antwort Antwort
Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#1

prozeduraufruf bei programmstart?

  Alt 6. Sep 2004, 21:08
moin ^^

ich hab folgendes problem: Mit einer Komponente biege ich den WndProc zeiger des Hauptformulars um. Da dies aber bei mehrmaligem ändern (innerhalb der IDE) zum abschmieren von delphi führt, wollte ich fragen wie ich in die komponente(!) implementieren kann, das sie erst bei programmstart die erforderliche "umbiegung" vornimmt.

hoffe mir kann jemand helfen
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: prozeduraufruf bei programmstart?

  Alt 6. Sep 2004, 21:10
ganz einfach. In der Componente folgendes schreiben
Delphi-Quellcode:
if not(csDesigning in Componentstate) then
begin
  //hier das machen was passieren soll wenn die Komponenten nicht im Designstate ist
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#3

Re: prozeduraufruf bei programmstart?

  Alt 6. Sep 2004, 21:11
Hi Nothine!

Umbiegen des WndProc-Zeigers? Naja...über Sinn und Unsinn fangen wir hier nicht an zu sprechen.
Versuch einfach, die Komponente dynamisch im OnCreate des Forms zu erzeugen. Somit besteht sie zur Entwicklungszeit noch nicht und dein Problem ist gelöst.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: prozeduraufruf bei programmstart?

  Alt 6. Sep 2004, 21:15
sinn und unsinn dieses umbiegens sind leicht zu erklären falls es jemanden interessiert.

if not(csDesigning in Componentstate) then
is mir bekannt, nur mein problem besteht einfach darin... wo soll ich danach prüfen??? der bei mehrfach-aufruf zum absturz führende code ist in einer set-methode einer property untergebracht, und ich kann den nutzer der komponente ja schlecht zwingen jedesmal wenn er sie benutzt im OnCreate den wert noch ma zu zuweisen den er ja eigentlich schon im OI eingestellt hat...

naja folgendes, es soll halt ne komponente sein die man auch zur designzeit aufs formular ziehen kann... deswegen dachte ich gibts kA vielleicht ne globale variable oder ähnliches die mir sagt das das programm gestartet wurde... (obwohl ich dann immer noch nich so direkt weiß wo ich die auswerten sollte...)
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: prozeduraufruf bei programmstart?

  Alt 6. Sep 2004, 21:21
wo ist dann das Problem mit dem csDesigning?
Delphi-Quellcode:
type
  TYourClass = class(TComponent)
  private
    fYourBoolean: Boolean;
    fSetMethode(AValue: Boolean);
  public
    property YourProperty: Boolean read fYourBoolean write fSetMethode;
  end;

procedure TYourClass.fSetMethode(AValue: Boolean);
begin
  if AValue <> fYourBoolean then
  begin
    fYourBoolean := AValue;
    if not(csDesigning in ComponentState) then
    begin
      //Do something with your Value and the WindowProc
    end;
  end;
end;
Also einfach deinen Status in einer Variablen speichern und dann zur Runtime erst zusätzlich darauf reagieren.

Du solltest zusätzlich noch dafür sorgen das deine Componente nur einmal erstellt werden kann damit nicht alles durcheinander kommt wenn diese dann in falscher reihenfolge wieder zerstört werden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: prozeduraufruf bei programmstart?

  Alt 6. Sep 2004, 21:26
Zitat von SirThornBerry:
Also einfach deinen Status in einer Variablen speichern und dann zur Runtime erst zusätzlich darauf reagieren
das is ja mein problem, wie reagier ich zur runtime erst drauf? (es wird natürlich in eine variable gespeichert, aber ich muss halt noch letzte schritte bei start des programms ausführen, die nicht früher passieren dürfen und die ich gerne automatisieren würde... is das denn so unmöglich?

Edit:
Zitat von SirThornBerry:
Du solltest zusätzlich noch dafür sorgen das deine Componente nur einmal erstellt werden kann damit nicht alles durcheinander kommt wenn diese dann in falscher reihenfolge wieder zerstört werden.
das ist nicht das problem, die komponente speichert den alten Zustand von WindowProc, und wer verändert schon (wenn ich das endlich so hinbekommen würde wie ich will) zur runtime WndProc ?
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: prozeduraufruf bei programmstart?

  Alt 6. Sep 2004, 21:28
Hmm, ich glaub ich verstehe dich nicht so recht. Durch das abprüfen des Componentstate stellst du doch sicher das alles erst zur runtime passiert. Vielleicht hilfts ja wenn du bissl mehr details preis gibst denn die eigentliche frage ist ja schon beantwortet (wie man sicherstellen kann das source einer componente nicht zur designtime ausgeführt wird), und wenn das nicht wirklich die frage war musst du wohl noch etwas prezisieren.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#8

Re: prozeduraufruf bei programmstart?

  Alt 6. Sep 2004, 21:30
Zitat von SirThornberry:
Hmm, ich glaub ich verstehe dich nicht so recht. Durch das abprüfen des Componentstate stellst du doch sicher das alles erst zur runtime passiert.
öhm... ja klar, ich stell sicher das erst wenn man zur laufzeit auf die property zugreift, das passiert was ich will. ich will das aber automatisieren!
nur damit du nicht meinst ich hätte es nicht versucht, ich habe diese wundervolle if-abfrage in meinen source eingefügt, nur leider passiert dann wenn man den wert zuweist und das programm startet: ... gar nichts.

Edit: btw wahrscheinlich wärs langsam zeit euch zu verklickern was ich vorhabe damit ihr ein bißchen mehr durchblickt

Edit die 2.: warum sagt mir hier eigentlich keiner das eine komponente 2mal erzeugt wird? einmal zur designtime und einmal zur runtime, dadurch is mein problem dank der csDesigning abfrage gelöst... trotzdem danke das ihr versucht habt mir zu helfen und ich ma wieder zu dumm war
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  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 16:13 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