Форум: "Основная";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
ВнизКак в ячейку StringGrid а вставить ComboBox? Найти похожие ветки
← →
IceBeerg © (2005-08-11 18:24) [0]1ый вопрос собственно сабж.
2ой вопрос как изменить шрифт отделной строки StringGrid"а, например сделать текст жирным?
← →
Kazakh (2005-08-12 07:30) [1]procedure TForm1.FormCreate(Sender: TObject);
begin
{Высоту combobox"а не изменишь, так что вместо combobox"а
будем изменять высоту строки grid"а !}
StringGrid1.DefaultRowHeight := ComboBox1.Height; {Спрятать combobox}
ComboBox1.Visible := False; ComboBox1.Items.Add("Delphi Kingdom");
ComboBox1.Items.Add("Королевство Дельфи");
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
{Перебросим выбранное в значение из ComboBox в grid}
StringGrid1.Cells[StringGrid1.Col,
StringGrid1.Row] := ComboBox1.Items[ComboBox1.ItemIndex];
ComboBox1.Visible := False; StringGrid1.SetFocus;
end;
procedure TForm1.ComboBox1Exit(Sender: TObject);
begin
{Перебросим выбранное в значение из ComboBox в grid}
StringGrid1.Cells[StringGrid1.Col,
StringGrid1.Row] := ComboBox1.Items[ComboBox1.ItemIndex];
ComboBox1.Visible := False; StringGrid1.SetFocus;
end;
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
var
R: TRect;
begin
if ((ACol = 3) and (ARow <> 0)) then
begin
{Ширина и положение ComboBox должно соответствовать ячейке StringGrid}
R := StringGrid1.CellRect(ACol, ARow); R.Left := R.Left + StringGrid1.Left;
R.Right := R.Right + StringGrid1.Left; R.Top := R.Top + StringGrid1.Top;
R.Bottom := R.Bottom + StringGrid1.Top; ComboBox1.Left := R.Left + 1;
ComboBox1.Top := R.Top + 1; ComboBox1.Width := (R.Right + 1) - R.Left;
ComboBox1.Height := (R.Bottom + 1) - R.Top; {Покажем combobox}
ComboBox1.Visible := True; ComboBox1.SetFocus;
end;
CanSelect := True;
end;
← →
begin...end © (2005-08-12 07:52) [2]> IceBeerg © (11.08.05 18:24)
> как изменить шрифт отделной строки StringGrid"а, например сделать текст жирным?
TCustomDrawGrid.OnDrawCell.
← →
han_malign © (2005-08-12 09:55) [3]>begin...end © (12.08.05 07:52) [2]
- в TStringGrid - тоже пройдет, при этом не придется самому контейнер делать под ячейки...
>IceBeerg © (11.08.05 18:24)
>2ой вопрос как изменить шрифт отделной строки StringGrid"а, например сделать текст жирным?
- примерно так:procedure TParamsForm.sgParamsDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var _color: TColor;
_fs: TFontStyles;
begin
with sgParams do begin
_color:=Canvas.Brush.Color;
_fs:=Canvas.Font.Style;
if((aRow>0)and(State<>[gdSelected]))then begin
if(not CanEditCell(ACol,ARow))
then Canvas.Brush.Color:=$F0F0F0;
if((ACol<4)and(Objects[0,aRow]<>nil))then begin
Canvas.Font.Style:=TParam(Objects[0,aRow]).FontStyle(_fs,aCol>2);
Canvas.Brush.Color:=TParam(Objects[0,aRow]).Color(Canvas.Brush.Color,aCol>2);
end;
end;
Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);
Canvas.Brush.Color:=_color;
Canvas.Font.Style:=_fs;
end;
end;
</cide>
← →
begin...end © (2005-08-12 09:59) [4]> han_malign © (12.08.05 09:55) [3]
> в TStringGrid - тоже пройдет
Дык... я и не опровергал это. Просто событие ввели в TCustomDrawGrid, поэтому я и написал так. Поскольку TStringGrid является потомком TCustomDrawGrid, в нём это событие, конечно, тоже есть.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.015 c