1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Редактирование Tstinggrid

Тема в разделе "Delphi - Компоненты", создана пользователем Fine, 23 июл 2005.

Статус темы:
Закрыта.
  1. Fine

    Fine Гость

    Репутация:
    0
    Здраствуйте товарищи.

    Можо компонент в TStringGrid
    1. делать readonly=false
    2. делать многострочный (в ячейках через ентер написать (разделить) строки) ?
    Или есть другие компоненты с такими свойствами ?

    Заране спасибо :)
     
  2. Poseidon

    Poseidon Гость

    Репутация:
    0
    1) Установи в Options параметр goEditing в True.

    2) Многострочные ячейки в StringGrid:
    Сперва необходимо установить свойство DefaultDrawing в False. Далее, необходимо вставить следующий код в обработчик события OnDrawCell:

    Код:
    procedure TForm1.StringGrid1DrawCell(Sender: TObject; 
                                        Col, Row: Longint; 
                                        Rect: TRect; 
                                        State: TGridDrawState); 
    var 
      Line1: string; 
      Line2: string; 
      ptr: integer; 
      padding: integer; 
      hGrid: TStringGrid; 
    
    begin 
     hGrid:= (Sender as TStringGrid); 
     ptr := Pos(';', hGrid.Cells[Col, Row]); 
     if ptr > 0 then 
     begin 
        Line1 := Copy(hGrid.Cells[Col, Row], 1, ptr - 1); 
        Line2 := Copy(hGrid.Cells[Col, Row], ptr + 1, 
                      Length(hGrid1.Cells[Col,Row]) - ptr); 
     end 
     else Line1 := hGrid.Cells[Col, Row]; 
     hGrid.Canvas.FillRect(Rect); 
     hGrid.Canvas.TextOut(Rect.Left, Rect.Top + 2, Line1); 
     if ptr > 0 then 
        hGrid.Canvas.TextOut(Rect.Left, Rect.Top - 
                             hGrid.Canvas.Font.Height + 3, Line2); 
    end;
    Теперь достаточно для переноса строки вставить в неё точку с запятой. Так же не забудьте изменить высоту строки так, чтобы переносы строки поместились в ячейку:

    Код:
    StringGrid1.RowHeights[0] := StringGrid1.DefaultRowHeight * 2;
     
  3. Fine

    Fine Гость

    Репутация:
    0
    А в Tdbgrid тоже можно ?
     
  4. Poseidon

    Poseidon Гость

    Репутация:
    0
    Что именно? У тебя 2 вопроса.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей