Autor |
Beitrag |
Flash106
      
Beiträge: 234
D7 Ent
|
Verfasst: Mo 27.12.04 14:44
Hallo...
ich habe eine eigene Editkomponente erstellt und sie von TEdit abgeleitet... aber es funktioniert kein Ereigniss... wieso nicht? Sowas wie OnClick oder OnChange..  hier mal der source der komponente:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| type TmyCustomEdit = class(TEdit) private edEdit: TEdit;
...
public constructor Create(AOwner: TComponent); override; published property OnClick; ... |
is dochok so oder?? ich will das OnClick oder OnChange ja nicht mal abwandeln.. es soll einfach nur drinn sein.. Wenn ich das Edit anklicke soll was passieren...
*seufz*.. hilfe...
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.Moderiert von Tino: Topic aus Sonstiges verschoben am Mo 27.12.2004 um 14:26
|
|
Spatz
      
Beiträge: 57
WIN 2k
D7E
|
Verfasst: Mo 27.12.04 15:19
wenn du es in deiner komponente nicht verändern willst, musst du es nicht als property deklarieren (ist ja schon in der superklasse getan). ansonsten musst du ein onclick- procedure dem property zuweisen und an einer stelle inherited onClick(Sender); aufrufen, dann wird das jew. komponentenspezifische onClick- Event aufgerufen.
|
|
Flash106 
      
Beiträge: 234
D7 Ent
|
Verfasst: Mo 27.12.04 15:27
was soll ich?? sorry hab ich nich ganz verstanden... gehts noch ein bisschen genauer?? sorry  .. wenn ichs gar nich reinschreibe in die kompo so wie ichs mir auch dachte da es ja schlieslich schon vorhanden is passiert aber auch nix  ..
bianca
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mo 27.12.04 15:43
Delphi-Quelltext 1: 2: 3:
| TmyCustomEdit = class(TEdit) private edEdit: TEdit; |
also das mit dem Edit IM edit macht doch wirklich keinen Sinn Bianca ???
was Spatz meinte ist dass du das Ereignis Onlick nicht nochmal definieren musst, da es bereits bei TEdit definiert ist. du kannst es also weglassen
|
|
Flash106 
      
Beiträge: 234
D7 Ent
|
Verfasst: Mo 27.12.04 15:46
ja aber wenn ich es rausnehme die Property OnClick also richtig weg passiert ja auch nichts!!  wieso den nich?? 
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mo 27.12.04 15:53
also: wenn deine Komponente fertig ist, ziehst du die auf dein Formular, dann kannst du unter den Ereignissen deines Editfeldes bei OnClick eine Prozedur dazuschreiben. dann sollte es funktionieren.
damit du die kompo aber auf die form ziehen kannst brauchst du ne REGISTER prozedur - hast du das ?
|
|
Flash106 
      
Beiträge: 234
D7 Ent
|
Verfasst: Mo 27.12.04 16:00
*seufz* .. also passt auf.. die komponenten ist fertig sie ist auf dem formular und funktioniert prima!!! alles bestens.. aber keine ereignist.. kein onklick kein nix.. ich kann es zwar auswählen kann auch reinschreiben was er bei onklick machen soll aber es passiert NIX!  .. vielleicht kann mir jemand mal nen kleine kurzen source schreiben vielleicht habe ich was übersehen oder falsch gemacht oder schick hier mal kurz den ganzen source:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92:
| unit myCustomEdit;
interface
uses Windows, SysUtils, Controls, StdCtrls, Classes, Graphics, Messages, mySQLConnection;
type TmyCustomEdit = class(TEdit) private edEdit: TEdit; FTable : string; FField : string; FEvent : TNotifyEvent; procedure ResizeMyBaseEdit; procedure SetText(s: String); function GetText: String; procedure SetTableName(vTable: String); function GetTableName: String; procedure SetFieldName(vField: String); function GetFieldName: String; protected public constructor Create(AOwner: TComponent); override; published property Text: String read GetText write SetText; property Tabelle: String read GetTableName write SetTableName; property Feld: String read GetFieldName write SetFieldName; end;
procedure Register;
implementation
procedure Register; begin RegisterComponents('Beispiele', [TmyCustomEdit]); end;
constructor TmyCustomEdit.Create(AOwner: TComponent); begin inherited;
Width := 200;
edEdit := TEdit.Create(Self); edEdit.Parent := Self; edEdit.OnClick := OnClick;
ResizeMyBaseEdit; end;
procedure TMyCustomEdit.ResizeMyBaseEdit; begin Height := edEdit.Height; edEdit.Width := Width end;
function TMyCustomEdit.GetText: String; begin Result := edEdit.Text; end;
procedure TMyCustomEdit.SetText(s: String); begin edEdit.Text := s; end;
function TMyCustomEdit.GetTableName: String; begin Result := FTable end;
procedure TMyCustomEdit.SetTableName(vTable: String); begin FTable := vTable; end;
function TMyCustomEdit.GetFieldName: String; begin Result := FField end;
procedure TMyCustomEdit.SetFieldName(vField: String); begin FField := vField; end;
end. |
bianca
|
|
Grendel
      
Beiträge: 443
Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
|
Verfasst: Mo 27.12.04 16:03
Wie retnyg bereits sagte macht das Edit im Edit keinen Sinn.
Du leitest ja eine Klasse von TEdit ab (besser wäre TCustomEdit) und in dieser erzeugst Du dann eine Instanz von TEdit. Wenn Du dann auf dieser Instanz rumklickst ist es klar, daß kein OnClick ausgeloest wird, da Du eben nicht auf deiner Komponente sondern auf einem Unterobjekt dieser bist.
Also schmeiß das edEdit: TEdit; komplett raus.
Bis neulich ...
|
|
Flash106 
      
Beiträge: 234
D7 Ent
|
Verfasst: Mo 27.12.04 16:12
ja ok gut danke.. aber wie erstelle ich dad edit dannusw.. also wie spreche ich es an.. hier z.b.:
Quelltext 1: 2:
| edEdit := TEdit.Create(Self); edEdit.Parent := Self; |
der kennt doch das edit dann nich mehr
ich stell mich echt zu blöd an sorry
|
|
Grendel
      
Beiträge: 443
Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
|
Verfasst: Mo 27.12.04 16:23
Flash106 hat folgendes geschrieben: | der kennt doch das edit dann nich mehr  |
Korrekt. Denn er ist ja selber ein edit. Wozu dann noch ein Edit im Edit.
Bis neulich ...
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mo 27.12.04 16:24
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87:
| unit myCustomEdit;
interface
uses Windows, SysUtils, Controls, StdCtrls, Classes, Graphics, Messages;
type TmyCustomEdit = class(TEdit) private FTable : string; FField : string; FEvent : TNotifyEvent; procedure ResizeMyBaseEdit;
procedure SetTableName(vTable: String); function GetTableName: String; procedure SetFieldName(vField: String); function GetFieldName: String; protected public constructor Create(AOwner: TComponent); override; published property Tabelle: String read GetTableName write SetTableName; property Feld: String read GetFieldName write SetFieldName; end;
procedure Register;
implementation
procedure Register; begin RegisterComponents('Beispiele', [TmyCustomEdit]); end;
constructor TmyCustomEdit.Create(AOwner: TComponent); begin inherited;
Width := 200;
end;
procedure TMyCustomEdit.ResizeMyBaseEdit; begin
end;
function TMyCustomEdit.GetTableName: String; begin Result := FTable end;
procedure TMyCustomEdit.SetTableName(vTable: String); begin FTable := vTable; end;
function TMyCustomEdit.GetFieldName: String; begin Result := FField end;
procedure TMyCustomEdit.SetFieldName(vField: String); begin FField := vField; end;
end. |
gruss retnyg
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mo 27.12.04 16:29
die pfade weiblicher gedanken sind oft verschlungen und dem aussenstehenden unverständlich... 
|
|
Flash106 
      
Beiträge: 234
D7 Ent
|
Verfasst: Mo 27.12.04 16:44
ahhh sorry..  ja bin ich blöde... is ja logisch brauch ja jetz den ganzen scheise nich mehr.. DANKE!!!!.. *hüpf* ... 
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mo 27.12.04 16:45
|
|