ZBEP

Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Блин вот делаю и ржу (необходимо просто реализовать в гриде авто-установку высоты каждой строки, в зависимости от длины текста в ячейке, который если не влезает по ширине должен переноситься на следующую строку, тем самым увеличивая высоту строки). Смешно то, что реализуя одно - перестает работать что-то другое. Если использовать: DBGridEd1 + ADOConnection1 + ADOQuery1 + DataSource1 + SQLDataDriverEh1 + MemTableEh1 то все выглядит как надо, но изменения вносимые в DBGridEd не сохраняются в базе данных. Если использовать без MemTableEh1, т.е. DBGridEd1 + ADOConnection1 + ADOQuery1 + DataSource1 то все нормально сохраняется, но нет переноса строк и авто-высоты строк. Если использовать код автора, ник которого я не помню: Код: procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState); var ARect:TRect; AText:string; RowNumber,NewHeight:integer; wTxt:integer; wRect:integer; nLine:integer; begin AText:=Column.Field.AsString; wTxt :=DBGridEh1.Canvas.TextWidth(AText); wRect:=(Rect.Right-Rect.Left)-2; nLine:=Trunc(wTxt/wRect)+0; //Тут вместо 1 выставил 0 if nLine>0 then //что бы не было лишнего отступа внизу каждой строки begin RowNumber:=DBGridEh1.DataSource.DataSet.RecNo; NewHeight:=nLine*TCrackCustomGridEh(Sender).DefaultRowHeight+7; if NewHeight>TCrackCustomGridEh(Sender).RowHeights[RowNumber] then begin TCrackCustomGridEh(Sender).RowHeights[RowNumber]:= NewHeight; end; ARect:=Rect; ARect.Bottom:=ARect.Top+TCrackCustomGridEh(Sender).RowHeights[RowNumber]; WriteTextEH(DBGridEh1.Canvas,ARect,True,1,1,AText,taLeftJustify,tlTop,True,False,0,0,False); end; end; | То все сохраняет и выглядит нормально, но глид прокручивает не все поля (ну т.е. полей 100, а он показывает только 80, остальные находятся ниже, но их не видно). Все, проблема решена: Необходимо использовать: DBGridEd1 + ADOConnection1 + ADOQuery1 + DataSource1 + DataSetDriverEh1 + MemTableEh1 Тогда и сохраняется всё и прокручивается как надо. П.с. Чет в последнее время сам задаю вопрос, сам отвечаю... | Всего записей: 186 | Зарегистр. 09-04-2009 | Отправлено: 08:34 20-11-2010 | Исправлено: ZBEP, 14:31 22-11-2010 |
|