AGB  ·  Datenschutz  ·  Impressum  







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

Eingaben im Objektinspektor prüfen

Ein Thema von messie · begonnen am 13. Okt 2006 · letzter Beitrag vom 21. Jul 2015
Antwort Antwort
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.879 Beiträge
 
Delphi 11 Alexandria
 
#1

Re: Eingaben im Objektinspektor prüfen

  Alt 16. Okt 2006, 20:04
Ja.
Markus Kinzler
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#2

AW: Eingaben im Objektinspektor prüfen

  Alt 12. Jul 2015, 22:45
noch mal zur Sicherheit, bevor ich es nochmal ausprobiere (beim ersten Mal hat es nicht geklappt):
die "normalen" Prozeduren zum Setzen der property werden nach einem Register auch zur Entwurfszeit ausgeführt?
Irgendwie klappt das bei mir nicht.
Ich bin dabei, eine eigene Komponente von TEdit abzuleiten. Die soll (ähnlich wie TLabelledEdit) auch eine Caption bekommen, und das funktioniert im Design-Mode überhaupt nicht. Ich habe jetzt im Setter eine Kontrollmeldung ausgegeben, und auch die wird nur zur Laufzeit beim Formcreate angezeigt, aber nicht, wenn ich die Eigenschaft im Object-Inspector ändere. Was ist da falsch?

Delphi-Quellcode:
TLabelPosition = (ptAbove, ptLeft, ptRight, ptBelow);

TfdEdit = Class(TEdit,IfdComponent)
  private
  FCaption: String;
  FCaptionPosition: TLabelPosition;
  FCaptionFont: TFont;
  FCaptionDistance: Integer;
  ...
  procedure SetLabelProperties;
  procedure SetLabelCaption(const value: string);
  procedure SetLabelFont(value: TFont);
  procedure SetLabelDistance(value: integer);
  ...
  published
  property Caption: string read FCaption write SetLabelCaption;
  property CaptionFont: TFont read FCaptionFont write SetLabelFont;
  property CaptionDistance: integer read FCaptionDistance write SetLabelDistance;
  End;

procedure TfdEdit.SetLabelProperties;
begin
if not assigned(FLabel) then exit;
Flabel.Caption:=FCaption;
if assigned(FCaptionFont) then FLabel.Font:=FCaptionfont;
case FCaptionPosition of
   ptAbove: begin FLabel.Left:=Left; FLabel.Top:=Top-FLabel.Height-FCaptionDistance end;
   ptLeft: begin FLabel.Left:=Left-FCaptionDistance-FLabel.Width; Flabel.Top:=Top+(Height-Flabel.Height) div 2 end;
   ptRight: begin FLabel.Left:=Left+FCaptionDistance+Width; Flabel.Top:=Top+(Height-Flabel.Height) div 2 end;
   ptBelow: begin FLabel.Left:=Left; FLabel.Top:=Top+Height+FCaptionDistance end;
   end (* case *);
end;

procedure TfdEdit.SetLabelCaption(const value: string);
begin
  FCaption:=value;
  Showmessage('Label: '+Value);
  if value='then
    begin
    if assigned(FLabel) then FLabel.Free;
    exit
    end;
  if not assigned(FLabel) then
    begin
    FLabel:=TLabel.Create(Self);
    FLabel.Parent:=Parent
    end;
  SetLabelProperties;
end;
Wenn ich das Programm starte, wird Showmessage ausgeführt, und das Editfeld samt des Caption-Labels richtig angezeigt.
Aber wenn ich im OI die Eigenschaft Caption ändere, hat das keine sichtbare Auswirkung, es wird weder das Showmessage noch der Label angezeigt.

Das Setzen der CaptionFont im OI ist übrigens auch nicht möglich. Die Property wird im OI angezeigt, aber wenn ich die drei Punkte anklicke, kommt die Fehlermeldung:
Zitat:
nil kann nicht zu TFont zugewiesen werden.
obwohl ich im Konstruktor von TfdEdit den Wert CaptionFont mit self.font initialisiert habe.

Geändert von idefix2 (12. Jul 2015 um 22:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.356 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Eingaben im Objektinspektor prüfen

  Alt 12. Jul 2015, 22:54
Bevor sich jemand mit den Details befasst: Installierst Du das Package auch neu?
Sonst wird zur Laufzeit die neue Version genutzt, die IDE nutzt aber noch die alte (die vielleicht noch nicht auf die Änderungen reagiert).
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#4

AW: Eingaben im Objektinspektor prüfen

  Alt 12. Jul 2015, 23:03
AAAhhhh!
Das heisst, dass ich nach jeder Komponentenänderung das Package neu installieren muss, damit die Änderungen sichtbar sind?
Das macht aber die Entwicklung von Komponenten zu einem leicht getrübten Vergnügen

Werde das Package jetzt neu installieren und dann berichten, ob das geholfen hat.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#5

AW: Eingaben im Objektinspektor prüfen

  Alt 12. Jul 2015, 23:38
Ja, das wars.

Ich hatte die Komponenten ins Testprojekt eingebunden, und das bekommt die IDe offenbar nicht mit.
Ich glaube (hoffe), es genügt, wenn man das Package selbst neu erzeugt, das dürfte sich dann automatisch in der IDE installieren. Das Deinstallieren des alten Package war jedenfalls reichlich aufwändig (Jede Menge "Ausnahmeverletzungen" beim Entfernen des Packages), und hat mir die Komponente auf dem Formular des Testprojekts rausfliegen lassen.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.356 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Eingaben im Objektinspektor prüfen

  Alt 12. Jul 2015, 23:47
Ich weiß nicht, wie es bei D2009 war (das nutzt Du?).

Zumindest mit neueren Versionen muss man ein Package nicht deinstallieren. Einfach Rechtsklick und installieren reicht eigentlich aus.
Dazu werden offene Formulare geschlossen, damit die Komponenten nicht aus der DFM entfernt werden (glaube ich jedenfalls - habe es schon länger nicht genutzt).

Also probiere einfach, Deine Formulare zu schließen und dann das Package "drüberzuinstallieren".
Das musst Du aber ja nur machen, wenn Du eine Änderung zur Designtime benötigst.

Nur (mit dem Hauptprojekt) neu kompilieren wird nicht reichen. Das hat nur Auswirkungen zur Laufzeit.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#7

AW: Eingaben im Objektinspektor prüfen

  Alt 13. Jul 2015, 00:33
Irgend etwas ist bei meiner Konfiguration nicht in Ordnung.
Beim Deinstallieren des Package habe ich Unmengen Fehlermeldungen bekommen, und wenn ich versuche, wie du hier schreibt, das Package direkt neu zu installieren, bekomme ich die Fehlermeldung
"Package d:\Delphi\Focus\Focus.bpl kann nicht deinstalliert werden."
Die Fehlermeldung kommt auch, nachdem ich alle Programmdateien geschlossen habe und nichts mehr angezeigt wird, was das Package brauchen könnte.

Aber für heute reicht es mir, jetzt gehe ich schlafen.
  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 18:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz