Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - eigene Editkomponente. Kein OnClick!! :(
Flash106 - Mo 27.12.04 13:44
Titel: eigene Editkomponente. Kein OnClick!! :(
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 - Mo 27.12.04 14: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 - Mo 27.12.04 14: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 - Mo 27.12.04 14: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 - Mo 27.12.04 14:46
ja aber wenn ich es rausnehme die Property OnClick also richtig weg passiert ja auch nichts!! :( wieso den nich?? :(
retnyg - Mo 27.12.04 14: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 - Mo 27.12.04 15: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:
Quelltext
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 - Mo 27.12.04 15: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 - Mo 27.12.04 15: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 - Mo 27.12.04 15: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 - Mo 27.12.04 15:24
Delphi-Quelltext
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 - Mo 27.12.04 15:29
die pfade weiblicher gedanken sind oft verschlungen und dem aussenstehenden unverständlich... :nut: :twisted:
Flash106 - Mo 27.12.04 15:44
ahhh sorry.. :oops: ja bin ich blöde... is ja logisch brauch ja jetz den ganzen scheise nich mehr.. DANKE!!!!.. *hüpf* ... :P
retnyg - Mo 27.12.04 15:45
8)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!