Не отображается sys-datetime
От: dpyzh  
Дата: 27.06.08 08:53
Оценка:
В проекте HTMLayoutSDK\wtl\browse можно создать input type=sys-datetime, который выглядит так:

pnmcc->outControlHwnd = ::CreateWindowEx(
    dwExStyle, CDateTimePickerCtrl::GetWndClassName(), NULL, dwStyle, 
    0, 0, 0, 0, hwndParent, (HMENU)(UINT_PTR)(GetAttrInt(pnmcc->helement,"id")), _Module.GetModuleInstance(), 
    pnmcc);


Окно создается (pnmcc->outControlHwnd != 0), но не отобржается.

html:

<html>
    <body>
        <input type="sys-datetime" />
    </body>
</html>
Re: Не отображается sys-datetime
От: c-smile Канада http://terrainformatica.com
Дата: 27.06.08 20:11
Оценка: 3 (1)
Здравствуйте, dpyzh, Вы писали:

Попробуй нечто типа:

<input type="sys-datetime" style="width:60px; height:2em" />


Ну и spy++ должен сказать где то окно оказалось.

Если кто-то скажет разумный и надежный способ спросить у окна preferred size — буду признателен.
В WM_NCCALCSIZE какая-то каша написана — все мои попытки задействовать только продемонстрирвали что народ
просто забивает на обработку WM_NCCALCSIZE.
Re[2]: Не отображается sys-datetime
От: Danchik Украина  
Дата: 01.07.08 12:18
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, dpyzh, Вы писали:


CS>Попробуй нечто типа:


CS>
CS><input type="sys-datetime" style="width:60px; height:2em" />
CS>


CS>Ну и spy++ должен сказать где то окно оказалось.


CS>Если кто-то скажет разумный и надежный способ спросить у окна preferred size — буду признателен.

CS>В WM_NCCALCSIZE какая-то каша написана — все мои попытки задействовать только продемонстрирвали что народ
CS>просто забивает на обработку WM_NCCALCSIZE.

Я всегда делал что то подобное:
GetWindowRect — взяли RECT окна
GetClientRect — взяли RECT клиентской области

Отняли от высоты windowRect выстоту clientRect (также и с длинной) — получили насколько меньше клиетская область.
Ну и исользуем эти величины для вычисления нового размера окна.
Re[3]: Не отображается sys-datetime
От: c-smile Канада http://terrainformatica.com
Дата: 01.07.08 20:31
Оценка:
Здравствуйте, Danchik, Вы писали:

CS>>Если кто-то скажет разумный и надежный способ спросить у окна preferred size — буду признателен.

CS>>В WM_NCCALCSIZE какая-то каша написана — все мои попытки задействовать только продемонстрирвали что народ
CS>>просто забивает на обработку WM_NCCALCSIZE.

D>Я всегда делал что то подобное:

D>GetWindowRect — взяли RECT окна
D>GetClientRect — взяли RECT клиентской области

D>Отняли от высоты windowRect выстоту clientRect (также и с длинной) — получили насколько меньше клиетская область.

D>Ну и исользуем эти величины для вычисления нового размера окна.

Я о другом.

Автор, скажем, написал следующее: <input type=sys-datetime>.
Какой размер этому окну мне ставить? И очень хотелось бы знать еще где у него baseline проходит.
Re[4]: Не отображается sys-datetime
От: Danchik Украина  
Дата: 02.07.08 14:49
Оценка:
Здравствуйте, c-smile, Вы писали:

[Skip]

CS>Я о другом.


CS>Автор, скажем, написал следующее: <input type=sys-datetime>.

CS>Какой размер этому окну мне ставить?

Высоту, например, можна подсмотреть как делает VCL:
procedure TDateTimePicker.AdjustHeight;
var
  DC: HDC;
  SaveFont: HFont;
  SysMetrics, Metrics: TTextMetric;
begin
  DC := GetDC(0);
  try
    GetTextMetrics(DC, SysMetrics);
    SaveFont := SelectObject(DC, Font.Handle); // шрифт который будет использоваться
    GetTextMetrics(DC, Metrics);
    SelectObject(DC, SaveFont);
  finally
    ReleaseDC(0, DC);
  end;
  Height := Metrics.tmHeight + (GetSystemMetrics(SM_CYBORDER) * 8);
end;


C длиной повеселее, но тоже решабельно.

CS>И очень хотелось бы знать еще где у него baseline проходит.

Наверное туплю, но что вы подразумеваете под baseline?
Re[5]: Не отображается sys-datetime
От: c-smile Канада http://terrainformatica.com
Дата: 02.07.08 20:02
Оценка:
Здравствуйте, Danchik, Вы писали:

D>Здравствуйте, c-smile, Вы писали:


D>[Skip]


CS>>Я о другом.


CS>>Автор, скажем, написал следующее: <input type=sys-datetime>.

CS>>Какой размер этому окну мне ставить?

D>Высоту, например, можна подсмотреть как делает VCL:


Это не работает в общем случае. Я не знаю тип элемента, какой он single или multi-line.
Например:
<input type=sys-datetime> и <input type=sys-calendar>

D>C длиной повеселее, но тоже решабельно.


Похоже что в общем случае никак не решабельно.

Т.е. остается только способ явного описания размеров в CSS.

CS>>И очень хотелось бы знать еще где у него baseline проходит.

D>Наверное туплю, но что вы подразумеваете под baseline?

http://en.wikipedia.org/wiki/Baseline_(typography)

Скажем вот эти два элемента:
Date:<input type=sys-datetime /> and note: <input type=text />
по умолчанию имеют vertical-align:baseline; т.е. их baseline должна совпадать с baseline окружающего текста.
Re[6]: Не отображается sys-datetime
От: Danchik Украина  
Дата: 03.07.08 11:06
Оценка:
Здравствуйте, c-smile, Вы писали:

[Skip]

CS>Похоже что в общем случае никак не решабельно.


Похоже на то. BTW, для календаря еcть message — MCM_GETMINREQRECT

CS>Т.е. остается только способ явного описания размеров в CSS.


высоту все-таки желательно было бы вычислить Хотя бы для известных контролов.

CS>>>И очень хотелось бы знать еще где у него baseline проходит.

D>>Наверное туплю, но что вы подразумеваете под baseline?

CS>http://en.wikipedia.org/wiki/Baseline_(typography)


CS>Скажем вот эти два элемента:

CS>Date:<input type=sys-datetime /> and note: <input type=text />
CS>по умолчанию имеют vertical-align:baseline; т.е. их baseline должна совпадать с baseline окружающего текста.

А понятно, спасибо за поднятие эрудиции
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.