現在、TEditとTSpeedButtonとTMonthCalenderを用いて、
日付選択・入力用のユーザコンポーネントを作成しています。
TSpeedButtonを押下された際に、TMonthCalenderを表示/非表示までは
できたのですが、表示位置をTEditの相対的な位置へセットすることが
できません。
Edit.Create時に、
TMonthCalender.Top := TEdit.Top;
TMonthCalender.Left := TEdit.Left + TEdit.Width;
ではだめなのでしょうか?
よろしくお願いします。
TMonthCalender,TEditはクラスの名前です。配置したTMonthCalender,TEditは別の名前になっていませんか?
HOtaさん
ありがとうございます。
表現方法が悪く誤解されてしまったようです。
具体的には、
type
・
・
・
MyCalender = class(TMonthCalendar)
private
FEdit: TEdit;
・
・
・
MyEdit = (TEdit)
private
m_inPlaceCalender : TMonthCalender;
・
・
・
constructor MyEdit.Create(AOwner: TComponent);
begin
・
・
・
with Self.m_inPlaceCalender do
begin
Parent := Self;
TabStop := False;
Visible := False;
Top := Self.Top;
Left := Self.Left + Self.Width;
end;
end;
です。
TMonthCalenderからみた親はTEditにしてるのですが、
実行時に親(TEdit)の位置ではなくて実行環境のウィンドウの
位置にされてしまうようです。
パネルなどの上にTEditを貼り付ける場合も考慮すると
どのようにすれば良いのか分からなくて
非常に困っています。
どうかよろしくお願いします。
ComboBox派生のDel田さんとは別人でしょうか?
ハンドル変えたり、まえのスレを放置するのはどうしてですか?
???????
> Parent := Self;
どうしてTMonthCalenderのParentにSelfを設定してるのでしょうか?
> Top := Self.Top;
> Left := Self.Left + Self.Width;
ということはMyEditのParentとCalenderのParentが同一である
ことを期待しているのだと思うのですが。
Create時ではなく、表示するイベントでカレンダーの親をTEditの親にしたらうまくいきました。
追加質問なのですが、
このコントロールをパネルの切れ目に貼り付けると、パネルの中におさまろうとしてしまい全部表示されません。
当然のことでしょうが・・・。
これを、コンボボックスのドロップダウンリストの用に
親枠に関係なく表示することは可能でしょうか?
また、できない場合コンボボックスのドロップダウンに
TMonthCalenderを表示することは可能でしょうか?
意味不明かもしれない内容かもしれませんが、
よろしくお願いします。
ツイート | ![]() |