大家好,我寫一個組件,對于其中的多個屬性想用一個整體編輯器進行設定,如何做?
誰有這方面的例子給我看一下。或提示我一下。
對各屬性分別寫屬性編輯器我知道,多個組合在一起如何做?
我說的不是像TFont這樣的,它其實是一個屬性。
比如,我從TRzGridPanel繼承寫一個新組件,現在需要寫一個整體屬性編輯器,一次性把其中的RowCollection, ColumnCollection, Color, BorderWidth等都設定了,如何做?
謝謝大家!
uj5u.com熱心網友回復:
如果這樣不行,我可以寫個組件編輯器,那么如何在這個編輯器中獲取此組件中的某些屬性的值,并在結束時設定這些屬性的值?
謝謝大家!
uj5u.com熱心網友回復:
你說的那個一個叫屬性編輯器,一個叫組件編輯器uj5u.com熱心網友回復:
謝謝關注!你說的我知道,
我想了一下,不可能寫一個編輯器一次性地設定多個屬性,所以應該寫一個組件編輯器。
但我在組件編輯器中怎么獲取與設定組件中的各屬性值呢?
uj5u.com熱心網友回復:
有個問題,我從TcxGrid或其它DEV組件繼承,然后寫組件編輯器,繼承GetVerb,GetVerbCount等函式,
這樣,原DEV組件的選單就沒有了,只剩下我加的和基本Delphi組件的選單項。
我從TdxComponentEditor或TComponentEditor繼承都一樣的效果
uj5u.com熱心網友回復:
我做了其它組件的組件編輯器,加了選單后,其它組件的選單也都沒有了。怪比如:TDBGrid這個delphi自帶的組件,我做后它原來的 Column Editor 選單就沒有了
肯定是那里有問題了。
其實我做的很簡單,比如:
定義:
TMyDBGridEditor = class(TComponentEditor)
public
procedure Edit; override;
procedure ExecuteVerb(index: Integer); override;
function GetVerbCount(): Integer; override;
function GetVerb(index: Integer): String; override;
end;
實作:
function TMyDBGridEditor.GetVerbCount: Integer;
var
k: Integer;
begin
Result := 1;
end;
function TMyDBGridEditor.GetVerb(index: Integer): String;
begin
case index of
0: Result := '我的選單...';
end;
end;
procedure TMyDBGridEditor.Edit;
begin
ExecuteVerb(0);
end;
procedure TMyDBGridEditor.ExecuteVerb(index: Integer);
begin
frm_dbgrid := Tfrm_dbgrid.Create(nil);
frm_dbgrid.ShowModal;
frm_dbgrid.Free;
end;
誰給我個好提示?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/108801.html
標籤:VCL組件開發及應用
上一篇:關于利息每天自動計算實作
