AGB  ·  Datenschutz  ·  Impressum  







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

Eigenschaft existiert nicht?!

Ein Thema von phlux · begonnen am 8. Nov 2002 · letzter Beitrag vom 10. Nov 2002
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#1

Eigenschaft existiert nicht?!

  Alt 8. Nov 2002, 19:54
Hallo!
Folgendes problem, ich schreib momentan eine Komponente, sieht imoment wie folgt aus:
Code:
unit SimpleFileView;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls;

type
  TSimpleFileView = class(TCustomListView)
  private
    { Private-Deklarationen }
    fPath: String;
    procedure SetPath(Path: String);
    procedure ListDirectory(Dir: String);
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    constructor Create(aOwner: TComponent); override;
  published
    { Published-Deklarationen }
    property Path: String read fPath write SetPath;
    property Align;
    property BorderStyle;
    property Color;
    property Ctl3D;
    property ColumnClick default False;
    property Columns;
    property Cursor;
    property Dragmode;
    property DragCursor;
    property Enabled;
    property Font;
    property Height;
    property HideSelection default False;
    property Hint;
    property IconOptions;
    property Items;
    property Left;
    property MultiSelect default False;
    property Name;
    property ParentColor;
    property ParentFont;
    property ParentShowHint;
    property PopupMenu;
    property ReadOnly default False;
    property ShowColumnHeaders default True;
    property ShowHint;
    property TabOrder;
    property TabStop;
    property Tag;
    property Top;
    property ViewStyle default vsReport;
    property Visible;
    property Width;
    property OnChange;
    property OnChanging;
    property OnClick;
    property OnColumnClick;
    property OnCompare;
    property OnDblClick;
    property OnDeletion;
    property OnDragDrop;
    property OnDragOver;
    property OnEdited;
    property OnEditing;
    property OnEndDrag;
    property OnEnter;
    property OnExit;
    property OnInsert;
    property OnKeyDown;
    property OnKeyPress;
    property OnKeyUp;
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
    property OnStartDrag;
{$IFDEF D3_OR_HIGHER}
    property HotTrack;
    property RowSelect default False;
{$ENDIF}
{$IFDEF D4_OR_HIGHER}
    property Anchors;
    property BiDiMode;
    property Constraints;
    property HotTrackStyles;
{$ENDIF}
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('CR-Soft', [TSimpleFileView]);
end;

constructor TSimpleFileView.Create(aOwner: TComponent);
var Column: TListColumn;

begin
  inherited Create(aOwner);
  ViewStyle := vsReport;
  RowSelect := True;
  ReadOnly := True;
  Column := Columns.Add;
  Column.Caption := 'Dateiname';
  Column.Width := Width - 30;
  IconOptions.WrapText := True;
  ColumnClick := False;
  If not (csDesigning in ComponentState) then
    ListDirectory(fPath);
end;

procedure TSimpleFileView.ListDirectory(Dir: String);
var
  Search: TSearchRec;
  Item: TListItem;

begin
  Items.Clear;
  If Dir[Length(Dir)] <> '\' then Dir := Dir + '\';
  if FindFirst(Dir + '*.*', faDirectory, Search) = 0 then
  begin
    repeat
      If ((Search.Attr AND faDirectory) = faDirectory) AND (Search.Name <> '.') then
      begin
        Item := Items.Add;
//        if fBrackets then
          Item.Caption := '['+Search.Name+']'
//        else
//          Item.Caption := Search.Name;
      end;
    until FindNext(Search) <> 0;
    FindClose(Search);
  end;
  if FindFirst(Dir + '*.*', $23, Search) = 0 then
  begin
    repeat
      If (Search.Attr <> faDirectory) then
      begin
        Item := Items.Add;
        Item.Caption := Search.Name
//          Item.Caption := Copy(ExtractFileName(Search.Name), 1, Length(ExtractFileName(Search.Name)) - 4);
      end;
    until FindNext(Search) <> 0;
    FindClose(Search);
  end;
end;

procedure TSimpleFileView.SetPath(Path: String);
begin
  if fPath <> Path then fPath := Path;
  if not (csDesigning in ComponentState) then
    ListDirectory(fPath);
end;

end.
Wenn ich jedoch jetzt die Kompo installiere (ist zwar noch nicht 100%ig fertig, nur zum testen) und in die Property Path z.B.: C:\ eintrage erhalte ich eine FehlerMsg, die sagt: Eigenschaft existiert nicht, wenn ich jetzt versuche die Property über den sourcecode anzusprechen wird sie erst gar nicht mehr angezeigt in dem dropdown fenster(das sich nach ner weile nach dem . öffnet, ka wie man das nennt). Hatte jemand von euch schon mal das Problem und kennt eine Lösung???

mfg phlux
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2
  Alt 8. Nov 2002, 23:28
Kann es sein, dass du mit 2 SimpleFileView.dcu Dateien arbeitest, einer alten und einer neuen?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 9. Nov 2002, 02:13
Moin Phlux,

also mit einer kleinen Ausnahme tut's Deine Kompo bei mir.
Den genannten Fehler kann ich nicht nachvollziehen.

Nur das

Delphi-Quellcode:
If not (csDesigning in ComponentState) then
    ListDirectory(fPath);
im constructor wird nicht funktionieren (bzw. tuts nicht) da zu diesem Zeitpunkt fPath noch nicht gesetzt ist.
Was auch garnicht notwendig ist, denn sollte Path im OI gesetzt worden sein, so wird bei der Initialisierung dieser Wert aus der Formularresource ausgelesen und in Path gesetzt. Da hierfür ja die Routine SetPath verwendet wird, wird ListDirectory in dieser Routine ausgeführt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#4
  Alt 9. Nov 2002, 12:39
@jbg: hab jetzt mal zur sicherheit die dcu datei aus dem lib verzeichniss gelöscht, mal schaun

@chris: jepp, danke scheint mir entfallen zu sein , nur wenn ich jetzt fPath im Constructor setze und if csDesigning... rausnehme kommt nur die nachricht " Element '' hat kein übergeordnetes Fenster ", ich versuch jetzt mal ne kombinatio aus beidem.

Der sh** Fehler besteht aber immer noch, ich glaub ich fang die Kompo mit anderem Namen nochmal neu an! War ja noch nicht soviel
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#5
  Alt 9. Nov 2002, 12:51
Ich kenne mich mit der Komponentenentwicklung so gut wie überhaupt nicht aus, aber versuch es mal so: Schreibe jede Variable/Property/Funkion, die eine Instanz der Kompo ist so:
Code:
self.Eigenschaft := Irgendwas;
self.Variable := self.Eigenschaft;
Chris
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#6
  Alt 9. Nov 2002, 13:14
Zitat von Chakotay1308:
Ich kenne mich mit der Komponentenentwicklung so gut wie überhaupt nicht aus, aber versuch es mal so: Schreibe jede Variable/Property/Funkion, die eine Instanz der Kompo ist so:
Code:
self.Eigenschaft := Irgendwas;
self.Variable := self.Eigenschaft;
Chris
Wenn ich die Kompo schreibe kann ich ja drauf zugreifen, nur wenn ich die Kompo installiere konnte ich nicht mehr drauf zugreifen, aber das Problem wurde durch umbenennen der Unit gelöst
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#7
  Alt 9. Nov 2002, 13:16
Moin Phlux,

ich hatte nur die beiden genannten Zeilen weggelassen, und die Kompo hat ansonsten keine Probleme gemacht.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#8
  Alt 9. Nov 2002, 16:08
Das einzige Problem ist jetzt noch, wenn ich im Constructor ListDirectory(fPath) ausführe, meckert Delphi das : Element " hat kein übergeordnetes Fenster! Habe es auch schon ausprobiert in der Prozedur Loaded und CreateWnd die Prozedur ListDirectory auszuführen, haut aber immer noch nicht hin
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#9
  Alt 9. Nov 2002, 23:08
Moin Phlux,

mit was soll ListDirectory denn im Constructor aufgerufen werden?

Der Pfad, der im OI gesetzt wird steht noch nicht zur Verfügung, so dass Du einen Standardpfad angeben musst, z.B. aus paramstr(0) extrahiert.

Was mir auch nicht klar ist:
Wozu soll ListDirectory im Constructor aufgerufen werden?
Wird Pfad im OI nicht gesetzt wird, völlig korrekt, nichts angezeigt.
Wird der Pfad dort gesetzt, so wird auch das angezeigt, was im OI gesetzt wurde.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#10
  Alt 10. Nov 2002, 11:43
Zitat von Christian Seehase:
Moin Phlux,

mit was soll ListDirectory denn im Constructor aufgerufen werden?
Mit irgend einem Standartpfad, ist irgendwie blöd, wenn man zur Designzeit nur ein leeres Feld vor sich sieht

Zitat:
Der Pfad, der im OI gesetzt wird steht noch nicht zur Verfügung, so dass Du einen Standardpfad angeben musst, z.B. aus paramstr(0) extrahiert.
Das ist eine gute idee, das versuch ich nacher mal
Christian "phlux" Arndt
  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 01:16 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