Главная страница
    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.048 c
2-1195317170
JanMihail
2007-11-17 19:32
2007.12.16
Отправка Get-запроса с прикрепленным файлом


2-1195635334
FaTRuS
2007-11-21 11:55
2007.12.16
Поиск по всей базе данных


11-1181646969
Nikfel
2007-06-12 15:16
2007.12.16
Как сделать ждущий и спящий режим


2-1195557399
Dennis I. Komarov
2007-11-20 14:16
2007.12.16
Забыл :(


15-1195127822
alex_***
2007-11-15 14:57
2007.12.16
аналог self в vb6





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский