AGB  ·  Datenschutz  ·  Impressum  







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

Komponentenentwicklung Problem mit AutoSize

Ein Thema von Optiplex · begonnen am 25. Mai 2009 · letzter Beitrag vom 26. Mai 2009
Antwort Antwort
Seite 1 von 2  1 2      
Optiplex

Registriert seit: 5. Mär 2008
131 Beiträge
 
Delphi 2005 Personal
 
#1

Komponentenentwicklung Problem mit AutoSize

  Alt 25. Mai 2009, 09:06
Hallo DP’ler ,
Ich habe mal wieder ein Problem mit einer Komponente
Die Komponente soll die Eigenschaft AutoSize besitzen, was Sie auch als gerbte Eigenschaft schon hat, also nichts leichter als das dachte ich und setze die Eigenschaft auf published.

Property AutoSize default true;

Im überschrieben Paint reagierte ich mit einer Abfrage darauf.

So und nun zu meinem Problem, wie bekommt meine Komponente mit, dass der Wert von AutoSize sich geändert hat, wenn ich Autosize auf false stelle passiert nämlich nichts. Gibt es vielleicht eine Message auf die man reagieren kann, sowie es beim Caption die Message CM_TEXTCHANGED gibt, oder wie bekommt meine Komponente sonst mit, dass sich der Wert geändert hat und Sie sich neu zeichnen muss.
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Komponentenentwicklung Problem mit AutoSize

  Alt 25. Mai 2009, 09:47
Du müsstest eigentlich in der Lage sein, dir dort selber mit WM_User eine Nachricht zu erzeugen. Also als const AutoSizeChanged = WM_User+1 (glaube so wird das deklariert) und dann als Message-Funtkion:

procedure AutoSizeChange(var MSG: TMessage);message AutoSizeChanged; // Hier reinschieben, wie du darauf reagieren willst in deinem Setter schreibst dir dann deine PostMessage:
PostMessage(Form1.Handle, AutoSizeChanged, 0, 0); Dann solltest erstmal zumindest mitbekommen, dass etwas passiert in deiner Variable AutoSize. Ist erstmal nur aus dem Kopf hier her geschrieben und eine Idee, so hab ich mal Fenster sich schließen lassen, hier mal der Threat dazu, vieleicht findest hier noch ein paar mehr Anregungen. Denke das könnte dir helfen.

MfG
BAMatze

PS.: Ansonsten könntest auch mit Events arbeiten.
2. Account Sero
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Komponentenentwicklung Problem mit AutoSize

  Alt 25. Mai 2009, 09:54
Dann kann man den entsprechenden Code doch auch gleich im Setter hinterlegen
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
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Komponentenentwicklung Problem mit AutoSize

  Alt 25. Mai 2009, 09:57
Zitat von DeddyH:
Dann kann man den entsprechenden Code doch auch gleich im Setter hinterlegen
da hast natürlich Recht
2. Account Sero
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Komponentenentwicklung Problem mit AutoSize

  Alt 25. Mai 2009, 11:12
Den Setter muss man natürlich auch erst einmal schreiben und daher die Eigenschaft selbst mit Getter und Setter neu hinschreiben. In Getter und Setter kann man dann darauf reagieren und mit inherited AutoSize ggf. auf die geerbte Eigenschaft zugreifen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Optiplex

Registriert seit: 5. Mär 2008
131 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Komponentenentwicklung Problem mit AutoSize

  Alt 25. Mai 2009, 12:50
Hallo zusammen,
Eine neue Variable ist eigentlich nicht die Lösung, da ja die Eigenschaft schon existiert und ich nur mitbekommen muss wann sie sich ändert, um darauf zu reagieren. Eine neue Eigenschaft mit Set und Get ist schnell programmiert, aber dann habe ich zwei Eigenschaften die dann das gleiche leisten sollen, und das möchte ich nicht. Es müsste meiner Meinung nach eine Message CM_xxxxxxxxx ausgelöst werden, nur die kann ich niegends finden.

Dieter
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Komponentenentwicklung Problem mit AutoSize

  Alt 25. Mai 2009, 12:53
Zitat von Optiplex:
Eine neue Eigenschaft mit Set und Get ist schnell programmiert, aber dann habe ich zwei Eigenschaften die dann das gleiche leisten sollen
Nein, eine gleichnamige, die die ursprüngliche anspricht...
Du kannst ja wie gesagt mit "inherited AutoSize" auf die der Oberklasse zugreifen.

// EDIT:
Stimmt, das geht auch einfacher, ein Blick in den mitgelieferten Quelltext sagt mir:
Du kannst einfach AdjustSize überschreiben, das wird aufgerufen, wenn die Eigenschaft verändert wird.

Eigentlich hätte ich das wissen müssen, ich habe nicht dran gedacht...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Optiplex

Registriert seit: 5. Mär 2008
131 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Komponentenentwicklung Problem mit AutoSize

  Alt 25. Mai 2009, 15:26
Danke für deine Antwort Jaenicke,
kannst du mir die komplette Syntax von AdjustSize geben damit ich diese überschreiben kann, ich habe nähmlich nur Delphi 2005 und da sind keine Quelltexte dabei.

Gruss Dieter
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Komponentenentwicklung Problem mit AutoSize

  Alt 25. Mai 2009, 15:29
Dann rate ich dir Turbo Delphi herunterzuladen, das ist kostenlos und enthält (weil es eine Professional Version ist) auch die Quelltexte.
http://www.delphi-library.de/viewtopic.php?p=539975
(Nebenbei hat es auch deutlich weniger Fehler usw.)

Die Syntax ist einfach:procedure AdjustSize; override; (so aus dem Kopf schnell mal geschrieben )
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Optiplex

Registriert seit: 5. Mär 2008
131 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Komponentenentwicklung Problem mit AutoSize

  Alt 26. Mai 2009, 09:00
Hallo Jaenicke,
vielen dank. Das war genau das was ich gesucht habe, funktioniert jetzt prima. Kannst du mir sagen ob die Eigenschaft Align auch in die procedure AdjustSize geht. Danke auch für den Link zu Turbo Delphi, werde ich mir noch genauer ansehen, allerdings habe ich schon gehört, dass man dort keine Komponenten erstellen kann.

Gruß Dieter
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15: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