Autor Beitrag
popi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: 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: :autsch:


Danke und Grüße

popi
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: 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

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Sa 10.06.06 22:12 
Okay, Du hast gewonnen...

Ich verstehe nur Bahnhof... :nixweiss:

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:
ausblenden volle Höhe 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:
unit CPortSetup;

{$I CPort.inc}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Buttons, CPort, CPortCtl;

type
  // TComPort setup dialog
  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
    { Private declarations }
  public
    { Public declarations }
  end;

procedure EditComPort(ComPort: TCustomComPort);

implementation

{$R *.DFM}

// show setup dialog
procedure EditComPort(ComPort: TCustomComPort);
begin
  with TComSetupFrm.Create(nildo
  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 user profile iconraziel: Highlight- durch Delphi-Tags ersetzt
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: 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