エディット+カレンダーについて

解決


DelDel  2007-06-05 16:36:35  No: 26510  IP: 192.*.*.*

現在、TEditとTSpeedButtonとTMonthCalenderを用いて、
日付選択・入力用のユーザコンポーネントを作成しています。

TSpeedButtonを押下された際に、TMonthCalenderを表示/非表示までは
できたのですが、表示位置をTEditの相対的な位置へセットすることが
できません。

Edit.Create時に、

TMonthCalender.Top := TEdit.Top;
TMonthCalender.Left := TEdit.Left + TEdit.Width;

ではだめなのでしょうか?

よろしくお願いします。

編集 削除
HOta  2007-06-05 18:26:24  No: 26511  IP: 192.*.*.*

TMonthCalender,TEditはクラスの名前です。配置したTMonthCalender,TEditは別の名前になっていませんか?

編集 削除
DelDel  2007-06-05 18:44:31  No: 26512  IP: 192.*.*.*

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を貼り付ける場合も考慮すると
どのようにすれば良いのか分からなくて
非常に困っています。

どうかよろしくお願いします。

編集 削除
あれ  2007-06-05 22:36:44  No: 26513  IP: 192.*.*.*

ComboBox派生のDel田さんとは別人でしょうか?
ハンドル変えたり、まえのスレを放置するのはどうしてですか?

編集 削除
DelDel  2007-06-05 23:03:50  No: 26514  IP: 192.*.*.*

???????

編集 削除
かみづ  2007-06-06 00:21:16  No: 26515  IP: 192.*.*.*

>     Parent  := Self;
どうしてTMonthCalenderのParentにSelfを設定してるのでしょうか?

>    Top := Self.Top;
>    Left := Self.Left + Self.Width;
ということはMyEditのParentとCalenderのParentが同一である
ことを期待しているのだと思うのですが。

編集 削除
DelDel  2007-06-07 00:41:38  No: 26516  IP: 192.*.*.*

Create時ではなく、表示するイベントでカレンダーの親をTEditの親にしたらうまくいきました。

編集 削除
DelDel  2007-06-09 11:40:01  No: 26517  IP: 192.*.*.*

追加質問なのですが、
このコントロールをパネルの切れ目に貼り付けると、パネルの中におさまろうとしてしまい全部表示されません。
当然のことでしょうが・・・。
これを、コンボボックスのドロップダウンリストの用に
親枠に関係なく表示することは可能でしょうか?
また、できない場合コンボボックスのドロップダウンに
TMonthCalenderを表示することは可能でしょうか?

意味不明かもしれない内容かもしれませんが、
よろしくお願いします。

編集 削除