| 
| 
 | Вопрос # 748/ вопрос открыт / | 
 |  Надо перевернуть TDateTimePicker (т.е. сделать BiDiMode=bdRightToLeft, который для этой компоненты не работает). Прилагаю код. Но он оставляет правую границу стрелки компоненты на месте. Выглядит некрасиво. Может есть идеи ?Спасибо.
 Приложение:Переключить в обычный режим procedure TForm1.ReverseDateTimePicker(dtp:TDateTimePicker); const   WS_EX_LAYOUTRTL   = $00400000; var   V:         Longint;   Comp: TComponent; begin    Comp := dtp;    V := GetWindowLong((Comp as TDateTimePicker).Handle, GWL_STYLE);    V := V OR $0040;    SetWindowLong((Comp as TDateTimePicker).Handle, GWL_STYLE, V);    V := GetWindowLong((Comp as TDateTimePicker).Handle, GWL_EXSTYLE);    V := V or WS_EX_LAYOUTRTL or WS_EX_RTLREADING or WS_EX_RIGHT or          WS_EX_RIGHTSCROLLBAR;    SetWindowLong((Comp as TDateTimePicker).Handle, GWL_EXSTYLE, V);    DateTime_SetFormat((Comp as TDateTimePicker).Handle, PChar(ReverseString(SHORTDATEFORMAT)));  end;  function TForm1.ReverseString(S: String): String; var     i, Len: Integer; begin    Result := '';    Len := Length(Trim(S));    if NOT Len > 1 then       Exit;    for  i := Len downto 1 do       Result := Result + s[i] ; end;  
|  |   Вопрос задал: Sharma Sergei (статус: Посетитель)Вопрос отправлен: 17 июля 2007, 00:24
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Матвеев Игорь Владимирович Здравствуйте, Sharma Sergei!А у меня все работает нормально. У Вас включены визуальные стили?
 Приложение:Переключить в обычный режим procedure TForm1.Button1Click(Sender: TObject);const  WS_EX_LAYOUTRTL   = $00400000;var  V:    Longint;begin V := GetWindowLong(DateTimePicker1.Handle, GWL_STYLE); V := V OR $0040; SetWindowLong(DateTimePicker1.Handle, GWL_STYLE, V); V := GetWindowLong(DateTimePicker1.Handle, GWL_EXSTYLE); V := V or WS_EX_LAYOUTRTL or WS_EX_RTLREADING or WS_EX_RIGHT or WS_EX_RIGHTSCROLLBAR; SetWindowLong(DateTimePicker1.Handle, GWL_EXSTYLE, V); DateTimePicker1.Format := PChar(ReverseString(SHORTDATEFORMAT));end; 
 Мини-форум вопросаВсего сообщений: 3; последнее сообщение — 18 июля 2007, 03:05; участников в обсуждении: 2. 
|   | Sharma Sergei (статус: Посетитель), 17 июля 2007, 22:58 [#1]:Компилятор Delphi 5 дает ошибку в последней DateTimePicker1.Format
 строке: \'Undeclared identifier \'Format\'\'.
 |  
|   | Sharma Sergei (статус: Посетитель), 17 июля 2007, 23:16 [#2]:Что значит \'У Вас включены визуальные стили? \' ? |  
|   | Матвеев Игорь Владимирович (статус: Студент), 18 июля 2007, 03:05 [#3]:Я писал в Delphi 6, в Delphi 5 это выражение нужно заменить на: 
 SendMessage((Comp as TDateTimePicker).Handle, DTM_SETFORMATA, 0 , Integer(PChar(ReverseString(SHORTDATEFORMAT))));
// ***
DTM_SETFORMATA = $1000 + 5; Это Ваш код, только немного по другому записанный.
 
 Визуальные стили - темы оформления Windows XP (например Luna), я, например, принципиально их не использую.
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |