Autor |
Beitrag |
popi
Beiträge: 26
|
Verfasst: Sa 10.06.06 21:31
Hallo zusammen,
ich habe die Komponente TComPort installiert und habe festgestellt, das die Einstellugen bezüglich der COM-Schnittstelle nur über eine vorgefertigte Form eingestellt werden können, die mit ComPort.ShowSetupDialog; aufgerufen wird.
Nun ist die dort verwendete Sprache englisch und ich hätte gerne die Ausdrücke in deutsch.
Vor allem, weil die Komponente FWS ist, ist das doch legitim.
Die Frage ist nun, wie man die Vorgaben in der TComComboBox ändern kann, da der Eintrag "Items" im Objektinspektor nicht angezeigt wird, wie das sonst der Fall bei Comboboxen ist!?
Danke im Voraus und freundliche Grüße
popi
|
|
mkinzler
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Sa 10.06.06 21:36
Es existiert hierfür wohl keine Property. Wenn du diese erstellst, wird diese Eigenschaft auch im OI angezeigt.
_________________ Markus Kinzler.
|
|
popi
Beiträge: 26
|
Verfasst: Sa 10.06.06 21:48
Hallo Markus,
das klingt gut... ;o)
Kannst Du mir bitte einen Hilfeanstoß geben und mal ein Beispiel posten, oder zumindenst mal sagen, wie man sowas realisiert?
Und das ganze bitte auf Anfängerniveu, sonst sehe ich nach 24 Std. rumprobieren ohne Erfolg so aus:
Danke und Grüße
popi
|
|
mkinzler
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Sa 10.06.06 21:59
Um einerseits einfach per OI Werte ändern zu können und andererseits das OOP-Konzept des "information hiding" zu unterstützen, hat man in Delphi die sogenannten Properies eingeführt.
Ein Beispiel
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| myClass = class private FName: String; public procedure setName( Value: string); published property Name: string read Fname write setName; end;
prozedur myClass.setName( Value: string); begin Fname := Value; end; |
Die eigentliche Eigenschaft FName ist privat. Über die Property Name kann man aber im OI zugreifen.
Entweder direkt, wie hier im Beispiel beim read oder über eine Prozedur (write) oder Funktion (read) um z.B. besondere Überprüfungen durchzuführen.
Beim Verändern des Inhaltes im OI wird dabei die hinterlegte Funktion/Prozedur aufgerufen.
_________________ Markus Kinzler.
|
|
popi
Beiträge: 26
|
Verfasst: Sa 10.06.06 22:12
Okay, Du hast gewonnen...
Ich verstehe nur Bahnhof...
Was aber nicht bedeutet, das ich es nicht verstehen will...
Schaus mal, hier ist der ziemlich übersichtliche Quellcode dieser Unit, wo also (und vor allem wie genau) kann ich jetzt die Auswahlmöglichkeiten in Combo1 ändern:
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:
| unit CPortSetup;
{$I CPort.inc}
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, CPort, CPortCtl;
type TComSetupFrm = class(TForm) Button1: TButton; Button2: TButton; GroupBox1: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Combo2: TComComboBox; Combo3: TComComboBox; Combo4: TComComboBox; Combo5: TComComboBox; Combo6: TComComboBox; Combo1: TComComboBox; private public end;
procedure EditComPort(ComPort: TCustomComPort);
implementation
{$R *.DFM}
procedure EditComPort(ComPort: TCustomComPort); begin with TComSetupFrm.Create(nil) do begin Combo1.ComPort := ComPort; Combo2.ComPort := ComPort; Combo3.ComPort := ComPort; Combo4.ComPort := ComPort; Combo5.ComPort := ComPort; Combo6.ComPort := ComPort; Combo1.UpdateSettings; Combo2.UpdateSettings; Combo3.UpdateSettings; Combo4.UpdateSettings; Combo5.UpdateSettings; Combo6.UpdateSettings; if ShowModal = mrOK then begin ComPort.BeginUpdate; Combo1.ApplySettings; Combo2.ApplySettings; Combo3.ApplySettings; Combo4.ApplySettings; Combo5.ApplySettings; Combo6.ApplySettings; ComPort.EndUpdate; end; Free; end; end;
end. |
Danke und Grüße
popi
Moderiert von raziel: Highlight- durch Delphi-Tags ersetzt
|
|
mkinzler
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Sa 10.06.06 22:20
Zitat: | Okay, Du hast gewonnen... |
Wenn ich es nicht geschafft habe, es dir verständlich zu erklären habe ich verloren ...
Zitat: | wo also (und vor allem wie genau) kann ich jetzt die Auswahlmöglichkeiten in Combo1 ändern: |
Hier garnicht, du müßtest Code in der Klasse TComComboBox einfügen.
Zitat: |
Was aber nicht bedeutet, das ich es nicht verstehen will...
|
Übernimm doch mal meinen Beispielcode in eine Unit. Dann wirst du sehen das du von außerhalb der Klasse nur auf die Property zugreifen kannst, nicht aber auf die private Eigenschaft. Die Property verhält sich wie eine Eigenschaft. Infomation hiding bedeutet, daß man von außen nicht direkt auf die Eigenschaften zugreifen kann, sondern spezielle Methoden (getter/setter) verwenden muß. Eine Proprerty ist eine Kombination von beiden, da Zugriff auf sie auf Methoden umgeleitet werden kann.
_________________ Markus Kinzler.
|
|
popi
Beiträge: 26
|
Verfasst: Sa 10.06.06 23:08
Okay, ich versteh (glaube ich)...
Ich kann also gar nichts ändern...
Wobei die Frage offen bleibt:
Kann ich nicht die Klasse an sich ändern, bzw. dessen Inhalt ???
Wenn ja, wo findet man so eine Klasse ?
MfG
popi
|
|
mkinzler
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: So 11.06.06 10:50
Welche Komponente ist das?
Hier gibt es eine mit Sourcecode, den man dann abändern könnte.
_________________ Markus Kinzler.
|
|
popi
Beiträge: 26
|
Verfasst: So 11.06.06 10:55
Hallo Markus,
vielen Dank für Deine Mühe...
Ich habe jetzt alles schon so angepasst und bin schon beim nächsten Problem...
Werde das jetzt so lassen, die Zeit drängt nämlich...
Muss ein Schulprojekt bis nächste Woche hinkriegen... und die Software ist nur der erste Teil, dann muss ich noch einen Controller programmieren (mir graut es schon)...
Liebe Grüße
popi
|
|
|