AGB  ·  Datenschutz  ·  Impressum  







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

Eigenen Datentyp anzeigen

Ein Thema von luckystar85 · begonnen am 21. Feb 2006 · letzter Beitrag vom 23. Feb 2006
Antwort Antwort
Seite 1 von 2  1 2      
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#1

Eigenen Datentyp anzeigen

  Alt 21. Feb 2006, 17:50
Moin, moin!!!

Ich habe mir eine Komponente geschrieben die einen mehrzeiligen Text anzeigen kann. Das besondere ich möchte das jede Textzeile eine andere Farbe hat, die der Anwender bestimmen kann. Das ist ja soweit kein Problem, nur wollte ich das der Anwender im Objectinspektor die aktuelle Zeile und den aktuellen Farbwert eintragen kann. Ich habe es zur Zeit so das ich das Lines eine TStringList verwende und wenn nach der Zeile eine "#" kommt, kopiere ich mir den folgenden Farbwert da raus. Nur ist das ja doof, weil der Anwender ja nie eine "#" als Symbol eintragen kann. Gibt es eine Möglichkeit das ich einen eigenen Typ definiere
Delphi-Quellcode:
TZeileninfo = record
  Zeile : String;
  Farbe : TColor;
und das denn im OI anzeigen lasse. Nur bei der obrigen Lösung ist das Problem das ich nicht 20 Zeilen eintragen kann, sondern nur eine Zeile. Ich habe mir auch eine Liste geschrieben und dort denn die Daten reingegeben das klappt auch ganz gut, nur ist da das Problem das ich das nur zur Laufzeit sehen kann und in der Entwicklungsumgebung nicht. Gibt es einen Kompromiss das ich wiebei einer TStringList mehrere Zeilen eintragen kann und denn noch einzeln dazugeordnet eine Farbe und das alles im OI das ich es auch schon zur Entwurfszeit sehe.
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  Mit Zitat antworten Zitat
Frank Borland

Registriert seit: 12. Feb 2006
Ort: Hamburg
55 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Eigenen Datentyp anzeigen

  Alt 21. Feb 2006, 18:11
so mal aus dem Hut: warum nicht

MeineStringList.AddObject(MeinString,TMeinObject);

da kannst Du zu jeder Zeile eigene Informationen hinzufügen.

Gruß


Malte
  Mit Zitat antworten Zitat
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Eigenen Datentyp anzeigen

  Alt 21. Feb 2006, 18:13
Ja, aber das geht ja auch nur zur Laufzeit. ich wollte es ja gerne das ich schon in der Entwicklungsumgebung sehen kann wie das alles aussieht.
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Eigenen Datentyp anzeigen

  Alt 21. Feb 2006, 18:28
du kommst nicht drum herum dir einen eigenen propertyeditor zu bauen. Also einen eigenen Dialog in dem du das einstellen kannst.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Eigenen Datentyp anzeigen

  Alt 21. Feb 2006, 18:34
Zitat von SirThornberry:
du kommst nicht drum herum dir einen eigenen propertyeditor zu bauen. Also einen eigenen Dialog in dem du das einstellen kannst.
Hast du einen Tipp wo man was über PropertyEditor finden kann (Tutorial oder so). Ich habe noch nie was davon gehört.
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  Mit Zitat antworten Zitat
Frank Borland

Registriert seit: 12. Feb 2006
Ort: Hamburg
55 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: Eigenen Datentyp anzeigen

  Alt 21. Feb 2006, 18:38
wie wär's mit dem TValueListEditor?


Gruß


Malte
  Mit Zitat antworten Zitat
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Eigenen Datentyp anzeigen

  Alt 21. Feb 2006, 18:43
Der TValueListEditor kann mir ja auch nicht weiter helfen. Damit kann ich ja leider keine neuen Eigenschaften meiner Komponente in den objektinspektor hinzufügen.
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  Mit Zitat antworten Zitat
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Eigenen Datentyp anzeigen

  Alt 21. Feb 2006, 23:54
Vielen Dank für eure Hilfe. Mit dem Property-Editor ging das alles ganz gut. Ich habe jetzt eine Liste (von TObjectList) als Eigenschaft definiert wo den Items denn eine Farbe und ein String zugewiesen werden kann. Läuft auch alles ganz prima. Mein akt. Prob.: Irgendwie wird meine Property "MenuLines" nicht im dfm abgespeichert. Im dfm taucht die Eigenschaft gar nicht auf. Ich habe auch schon mal gesucht, aber ein OnSave Ereignis oder ähnliches habe ich nicht gefunden. Kennt ihr das Prob?
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Eigenen Datentyp anzeigen

  Alt 22. Feb 2006, 00:23
für sowas gibt es eine Extra Methode welche du überschreiben musst. Damit hast du die Möglichkeit properties die nicht published sind auch in der DFM zu speichern (gegebenfalls auch binaryproperties die nicht auftauchen im Objectinspektor). Die Methode welche du überschreiben musst heißt:
procedure DefineProperties(Filer: TFiler); diese kann wie folgt aussehen wenn sie überschreiben ist:
Delphi-Quellcode:
procedure TYourClass.DefineProperties(AFiler : TFiler);
begin
  inherited;
  AFiler.DefineBinaryProperty('Data', FReadBinProp, FWriteBinProp, Count > 0);
end;
wobei "FreadBinProp" und "FWriteBinProp" Methoden sind welche einen Stream erwarten und wie folgt definiert sind
Delphi-Quellcode:
procedure TYourClass.FWriteBinProp(AStream: TStream);
begin
  SaveToStream(AStream);
end;

procedure TYourClass.FReadBinProp(AStream: TStream);
begin
  LoadFromStream(AStream);
end;
Es ist ja auch irgendwo logich dass, das ganze zur zeit nicht in der DFM auftaucht denn woher soll delphi wissen wie es die Objectlist speichern soll bzw. die Objecte darin.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Eigenen Datentyp anzeigen

  Alt 22. Feb 2006, 22:07
Ich habe das jetzt so programmiert, wie du es vorgeschlagen hast, nur bekomme ich beim Laden die Meldung "Ungültiger Wert der Eigenschaft". Leider kann man ja nicht debuggen was genau geschrieben und geladen wird, aber das geht ja nicht. Im dfm sind auch Daten
Zitat:
{02000000602E6505000000000884690500008000}
abgespeichert, aber die kann ich ja auch nicht lesen.

Delphi-Quellcode:
Procedure TEventLogPropertyList.LoadFromStream(AStream: TStream);
Var
  i,
  lCount : Integer;
  lColor : TColor;
  lLine : String;
  lData : TEventLogPropertyData;
Begin
  AStream.Read(lCount, SizeOf(Integer));

  For i := 0 To Pred(lCount) Do
  Begin
    AStream.Read(lLine, SizeOf(String));
    AStream.Read(lColor, SizeOf(TColor));

    lData := TEventLogPropertyData.Create;
    lData.Line := lLine;
    lData.Color := lColor;
    Add(lData);
  End;
End;

Procedure TEventLogPropertyList.SaveToStream(AStream: TStream);
Var
  i : Integer;
Begin
  AStream.Write(Count, SizeOf(Integer));

  For i := 0 To Pred(Count) Do
  Begin
    AStream.Write(Items[i].Line, SizeOf(Items[i].Line));
    AStream.Write(Items[i].Color, SizeOf(Items[i].Color));
  End;
End;
Seht ihr hier irgendwo einen Fehler?
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  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 08:02 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