S.A
Verdiğiniz örnekteki gibi constructor,destructor fonksiyonlarını ekledim şu anda sorunsuz çalışıyor. Yapmak istediğim son bir şey var Field'Value' isminde bir property ekleyeceğim. Comboda da seçilen seçeneğin "FieldValues' deki değerini alarak "FieldValue" özelliğine yazdıracağım. Ayrıca Value kısmına bir değer yazdırdığımda da bu değeri "FieldValues" deki değere bakarakak eşit olan değerin index numarasını alarak combobxda seçili hale gitirecek.
2. kısmı yani "FieldValue" ye yazılan değeri "FiledValues' de bulup seçili hale getirmesini yaptım. Bunun için
Kod: Tümünü seç
Property FieldValue : String read FValue Write DegerOku;
Bu propertiyi ekledim. Burdaki "DegerOku" fonksyonunu FieldValue ye değer girdiğimizde çalışacak olan fonksiyon. Bunuda aşağıda veriyorum.
Kod: Tümünü seç
procedure TYGCombo.DegerOku(const Value: String);
begin
ItemIndex:=FieldValues.IndexOf(Value);
FValue := Value;
end;
Bu kısımda görüldüğü gibi girien değeri "indexOf" komutu ile "FieldValues" deki index numarasını alıyorum aldığım index numarasınıda "itemindex" e eşitleyerek comboyu seçili hala getiriyorum.
Şindi takıldığım nokta bunum tam tersi olarak Comboboxda bir seçeneği seçtiğimizde bu seçeneğin "FieldValues" deki değerini bularak "FieldValue" ye aktarmak.
Kodun son halini aşağıda veriyorum. Tşler İyi çalışmalar.
Kod: Tümünü seç
unit YGCombo;
interface
uses
Windows, SysUtils, Classes, Controls, StdCtrls, Dialogs;
type
TYGCombo = class(TComboBox)
private
{ Private declarations }
FValue : String;
FFieldValues : TStrings;
procedure DegerOku(const Value: String);
procedure SetFieldValues(const Value: TStrings);
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
published
{ Published declarations }
Property FieldValue : String read FValue Write DegerOku;
Property FieldValues : TStrings read FFieldValues Write SetFieldValues;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('YG', [TYGCombo]);
end;
constructor TYGCombo.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
FFieldValues := TStringList.Create;
end;
procedure TYGCombo.DegerOku(const Value: String);
begin
ItemIndex:=FieldValues.IndexOf(Value); //Items.IndexOf(Value);
FValue := Value;
end;
{=====================}
destructor TYGCombo.Destroy;
begin
FFieldValues.Free;
inherited Destroy;
end;
procedure TYGCombo.SetFieldValues(const Value: TStrings);
begin
FFieldValues.Assign(Value);
end;
end.