Форум: "Потрепаться";
Текущий архив: 2003.03.31;
Скачать: [xml.tar.bz2];
ВнизДавайте мне поможем с DbgridEh из Ehlib Найти похожие ветки
← →
vopros (2003-03-14 10:39) [0]Пользователи хотят чтобы высота строк соответсвовала размеру содержимого этих строк. ТОбишь как в Printdbgrideh-RowStretch.
Я еще не разбирался но Вас прощу помочь дабы время не тратить много весна все таки.
Да, сейчас влюблен в Наташу- замечательную девушку из медцентра где я кодировался от алкоголя. Собрались расписать летом.Извините за оффтопик.
← →
Danilka (2003-03-14 10:55) [1]:)))
весна это хорошо, влеблен в Наташку, вообще класс, а вот расписаться... поживи с этой Наташкой сначала пару лет, потом поймешь, хочется тебе расписываться или нет.
А по теме, DbgridEh, честно говоря, не видел, для своего грида, насленика от стринггрида делать примерно так:
В обработчике OnPressKey толи OnKeyUp (уже не помню, давно дело было) проверял, сколько строк в тексте и потом:
RowHeights[i]:=y*canvas.TextHeight("W")+5;
InplaceEditor.Height:=RowHeights[i];
были еще какие-то приколы, но их я уже не помню...
← →
Кулюкин Олег (2003-03-14 12:11) [2]Я делал это с обычным гридом.
THackGrid = class(TDBGrid)
public
property RowHeights;
property DataLink;
end;
procedure TGeogrObjProp.DBGrid2DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var R : TRect;
S : String;
Y : integer;
begin
if not (Sender as TDBGrid).DataSource.DataSet.IsEmpty then
begin
R := Rect;
S := (Sender as TDBGrid).DataSource.DataSet.FieldByName("Comment").AsString;
Y := DrawText((Sender as TDBGrid).Canvas.Handle, PChar(S), -1, R, DT_WORDBREAK or DT_CALCRECT);
if Y > THackGrid(Sender).RowHeights[THackGrid(Sender).DataLink.ActiveRecord + 1] then
THackGrid(Sender).RowHeights[THackGrid(Sender).DataLink.ActiveRecord + 1] := Y;
R := Rect;
R.Bottom := R.Top + Y;
DrawText((Sender as TDBGrid).Canvas.Handle, PChar(S), -1, R, DT_LEFT or DT_WORDBREAK);
end;
end;
end;
← →
Danilka (2003-03-14 12:18) [3]Кулюкин Олег © (14.03.03 12:11)
а как во время едита? ;))
← →
Кулюкин Олег (2003-03-14 13:08) [4]2 Danilka © (14.03.03 12:18)
Никак :)
Только смотреть.
В вопросе не было сказано, что надо редактировать. :)
← →
Danilka (2003-03-14 13:11) [5]Кулюкин Олег © (14.03.03 13:08)
точно нет. :))
это все весна пополам с тяпницей...
← →
Кулюкин Олег (2003-03-14 13:12) [6]2 Danilka © (14.03.03 13:11)
Надо подумать как лучше сделать с редактированием.
← →
Danilka (2003-03-14 13:32) [7]Кулюкин Олег © (14.03.03 13:12)
с этим геморой еще тот... надо сделать свой InplaceEdit-ор - стандартный TInplaceEdit пишет все в одну строку, можно наследоваться и от него, и переопределить CreateParams примерно вот-так:
procedure TDanInplaceEdit.CreateParams(var Params: TCreateParams);
const
Alignments: array[TAlignment] of DWORD = (ES_LEFT, ES_RIGHT, ES_CENTER);
begin
inherited CreateParams(Params);
if wrapEdit then
with Params do Style := Style or Alignments[FAlignment] xor ES_AUTOHSCROLL
else with Params do Style := Style or Alignments[FAlignment] or ES_AUTOHSCROLL;
end;
Потом надо обьяснить гриду, чтобы он пользовался этим едитором, вместо стандартного, и в нем уже, при редактировании при обработке нажатия клавиши смотреть сколько строк получается и в соответствии с этим увеличивать/уменьшать высоту строки грида.
← →
Danilka (2003-03-14 13:42) [8]но вообще, это только начало гемороя :))
затем захочется, чтобы во время редактирования ячейки можно було менять выравнивание текста, по левому/правому краю, по центру (по-крайней мере мне захотелось) и еще всяких фичь, вобщем, едитор сам распухнет очень даже нехило...
← →
Mike Kouzmine (2003-03-14 13:43) [9]В OptionEh что-то типа dghFitRow что-то там Text
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.03.31;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c