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
Seite 1 von 3  1 23      
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#1

Eingaben im Objektinspektor prüfen

  Alt 13. Okt 2006, 11:10
Moin,

ich bastle mir gerade die TFormResizer-Kompo von kalmi01 für meine Zwecke zurecht, dabei habe ich eine Menge Zeit verschenkt, weil ich im Objektinspektor einen unsinnigen Wert eingegeben hatte.
Wie kann ich die Werte bei der Eingabe prüfen?

Grüße, Messie
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Eingaben im Objektinspektor prüfen

  Alt 13. Okt 2006, 11:12
In der Setter-Methode der Property bzw. im passenden PropertyEditor
Markus Kinzler
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Eingaben im Objektinspektor prüfen

  Alt 13. Okt 2006, 11:22
Zitat von mkinzler:
In der Setter-Methode der Property bzw. im passenden PropertyEditor
Damit kann ich noch nicht viel anfangen. Ich brauche also eine Routine, die zur Entwurfszeit benutzt wird. Wie sieht die aus? Reicht es, eine Routine zu schreiben und dann die Kompo neu zu installieren?

Grüße, Messie
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Eingaben im Objektinspektor prüfen

  Alt 16. Okt 2006, 20:17
...ich würde das gerne noch verstehen. Hat noch jemand ein Beispiel oder ein paar warme Worte?

Grüße, Messie
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Eingaben im Objektinspektor prüfen

  Alt 16. Okt 2006, 20:34
Delphi-Quellcode:
TPerson = class
  private
    FGeburttag: TDate;
  public
    procedure setGeburttag( Value: TDate);
    function getAlter: Byte;
  published
    property Geburtstag: Tdate read FGeburttag write setGeburtstag;
    property Alter: Byte read getAlter;
end;

procedure TPerson.setGeburttag( Value: TDate);
begin
    if Value < date() then
    begin
      FGeburttag := Value;
    end
    else
    begin
     //Fehlerausgabe
    end;
end;

function TPerson.getAlter: Byte;
var
    d,m,y: Word;
begin
    Decodedate( Date()-FGeburttag, y, m, d);
    result := y;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Eingaben im Objektinspektor prüfen

  Alt 16. Okt 2006, 20:50
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?

Grüße, Messie
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Eingaben im Objektinspektor prüfen

  Alt 16. Okt 2006, 21: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
 
#8

AW: Eingaben im Objektinspektor prüfen

  Alt 12. Jul 2015, 23: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 23:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

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

AW: Eingaben im Objektinspektor prüfen

  Alt 12. Jul 2015, 23: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
 
#10

AW: Eingaben im Objektinspektor prüfen

  Alt 13. Jul 2015, 00: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
Antwort Antwort
Seite 1 von 3  1 23      


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 12:37 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