Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];

Вниз

Фокус ListView   Найти похожие ветки 

 
Илья_С   (2007-09-25 13:54) [0]

Уважаемые мастера.
Скажите, можно ли вызвав какое-нибудь модальное окно
на ListView - ListView сохранял фокус последней выделенной строки,
а не исчезал. Как, например, в StringGrid.
Спасибо.


 
Dib@zol ©   (2007-09-25 14:06) [1]

Пиши обработчик сообщения WM_KILLFOCUS, в нем запоминай в ЛистВиев1.Таг индекс выделенной строки, затем в обраьотчике WM_SETFOCUS (OnFocus кажется) проставляй Selected равным Tag.


 
Германн ©   (2007-09-25 14:21) [2]


> Илья_С   (25.09.07 13:54)

HideSelection:=False;


 
Илья_С   (2007-09-25 14:26) [3]

HideSelection не помогает.
Выделенной строки с цветом не получишь.


 
Palladin ©   (2007-09-25 14:36) [4]

в каком плане ты ее получить хочешь?


 
Илья_С   (2007-09-25 14:47) [5]

procedure TMain_f.DrawListView(const AListView:TListView; Item: TListItem;
SubItem: Integer; State: TCustomDrawState; Tag:Integer; Image1,Image2:TImage);
var
  dbitmap:TBitmap;
  OldBkMode:Integer;
  Rect:TRect;
  s:string;
  format:Integer;
begin
  format:=0;
  AListView.Canvas.Font.Style:=AListView.Canvas.Font.Style-[fsBold];
  if cdsSelected in State then
  begin
     AListView.Canvas.Font.Color:=clHighLightText;
  end
  else
  begin
     if Item.SubItems[2] = "0" then
     begin
        AListView.Canvas.Brush.Color:=clinfoBK;
        if Item.Caption <> "1" then
           AListView.Canvas.Font.Color:=clRed
        else
           AListView.Canvas.Font.Color:=clWindow;
     end
     else
        AListView.Canvas.Font.Color:=$00000000;
  end;
  if Item.Caption = "1" then
     AListView.Canvas.Brush.Color:=clRed;
 { else
  if Item.Caption = "3" then
     AListView.Canvas.Brush.Color:=clLime;
  }
  if  (SubItem = 1) then
  begin
     DBitmap:=TBitmap.Create;
     if Item.Caption = "0" then
     begin
        DBitmap.Assign(Image1.Picture.Bitmap);
        DBitmap.TransparentColor:=$00000000;
        DBitmap.Transparent:=True;
     end
     else
     if Item.Caption = "1" then
     begin
        DBitmap.Assign(Image2.Picture.Bitmap);
        DBitmap.TransparentColor:=$00000000;
        DBitmap.Transparent:=True;
     end;
     AListView.Canvas.Draw(Item.Left+8,Item.Top-1,DBitmap);
     DBitmap.Free;
  end else
  if  (SubItem > 1) then
  begin
     OldBkMode := SetBkMode(AListView.Canvas.Handle, TRANSPARENT);
     Rect.Left := LVIR_BOUNDS;
     Rect.Top  := (SubItem);
     SendMessage(AListView.Handle, LVM_GETSUBITEMRECT, Item.Index, LParam(@Rect));
     Rect.Left:=Rect.Left+2;
     Rect.Right:=Rect.Right-2;
     s:=Item.SubItems[SubItem-1];
   {  if cdsFocused in State then
     begin
        AListView.Canvas.Brush.Color:= clLime;
        AListView.Canvas.FillRect(Item.DisplayRect(drBounds));
        AListView.Canvas.TextOut(Rect.Left+2,Rect.Top+2,s);
     end else
    } if Item.Caption <> "1" then
     if cdsSelected in State then
     begin
        AListView.Canvas.Brush.Color:= clHighLight;
  //      AListView.Canvas.FillRect(Item.DisplayRect(drBounds));
        AListView.Canvas.FillRect(Rect);
        AListView.Canvas.TextOut(Rect.Left+2,Rect.Top+2,s);
     end
     else
     if (SubItem = 7) and (s = "Ж") then
        AListView.Canvas.Brush.Color:=RGB(246,221,140)    //$00FFB7FF   //$000080FF             //$0040C5F7
     else
     if (SubItem = 7) and (s = "М") then
        AListView.Canvas.Brush.Color:=clYellow;

     AListView.Canvas.FillRect(Rect);

     if AListView.Columns[SubItem].Tag = 0 then
        format:=DT_LEFT
     else
     if AListView.Columns[SubItem].Tag = 1 then
        format:=DT_CENTER
     else
     if AListView.Columns[SubItem].Tag = 2 then
        format:=DT_RIGHT;
     DrawTextEx(AListView.Canvas.Handle, PChar(s), Length(s), Rect, DT_WORD_ELLIPSIS or format, nil);
     SetBkMode(AListView.Canvas.Handle, OldBkMode);
  end;
  with AListView.Canvas.Font do
     if Assigned(OnChange) then OnChange(AListView.Canvas.Font);
end;

Вот код: HideSelection = False  - все clHighLight закрашивается.
Хочется только последнюю выделенную строку при потере фокуса.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.045 c
15-1195131734
Ega23
2007-11-15 16:02
2007.12.16
Так всё-таки: как канонически правильно передавать объекты


15-1195110851
Cyrax
2007-11-15 10:14
2007.12.16
Кодировка в pdf-файле...


11-1181489135
=BuckLr=
2007-06-10 19:25
2007.12.16
Про DeleteLines


15-1195306368
boriskb
2007-11-17 16:32
2007.12.16
Век живи - век учись


2-1195735467
Ростик
2007-11-22 15:44
2007.12.16
Пример программы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский