Текущий архив: 2004.01.13;
Скачать: CL | DM;
ВнизФункция форматирования текста в Stringgrid Найти похожие ветки
← →
Amadeus (2003-12-19 00:45) [0]Поддскажите функцию, которая делает следующее:
При изменении ширины колонки в Stringgrid - если текст полностью не влезает, то добавлять в конце троеточие.
← →
Anatoly Podgoretsky (2003-12-19 08:51) [1]DrawTextEx
← →
Amadeus (2003-12-19 09:30) [2]И ещё такой вопрос: как сделать, чтобы можно было плавно менять ширину колонки в SnringGrid? Мышку двигаешь и ширина чтобы сразу менялась, а не после отпускания мыши?
← →
Amoeba (2003-12-19 12:36) [3]Написать свой StringGrid
← →
Amadeus (2003-12-19 13:02) [4]>Написать свой StringGrid
Может готовый уже есть с такими возможностями?
← →
Amoeba (2003-12-19 13:06) [5]Ищите да обрящете.
← →
Amadeus (2003-12-19 17:02) [6]Может всё-таки кто-нибудь подскажет какой компонент, кто-то ведь пользуется дополнительными. Надо всего лишь 2 доп функции: плавное изменение ширины стобца и форматирование текста при изменении ширины.
Во всех компонентах, которые я нашёл, ширина столбца ни в каком не меняется плавно.
← →
Анонимщик (2003-12-19 18:10) [7]В предке TStringGrid"а - классе TCustomGrid в секции protected есть процедура ColWidthsChanged. Вот и нужно, стало быть, в твоем наследнике процедуру переопределить и написать там то, что тебе нужно. Все понятно?
← →
Amadeus (2003-12-26 01:38) [8]Понятно то понятно, только я сделать это навряд ли смогу.
← →
Talla2k (2003-12-26 01:49) [9]ProfGrid,что на torry!!!Полный рулез!!!Там есть все!Даже copy,cut,paste,clear для группы ячеек(обычный StringGrid не позволяет даже выделять при goEditing=true)
З.Ы.Один только минус!Он платный,а мои 3-х дневные поиски не к чему не привели.
← →
Анонимщик (2003-12-26 11:56) [10]На самом деле для плавного изменения ширины столбцов достаточно написать реакции на события OnMouseDown, OnMouseMove, OnMouseUp.
А для написания текста с многоточием - использовать обработчик OnDrawCell.
Я на твоем месте так бы и попытался сделать - вдруг выйдет все-таки? Если не будет получаться - помогу.
← →
Silver Alex (2003-12-26 15:49) [11]может быть немного топорно, но смысл я думаю понятен.Можно где надо поправить
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
str: String;
i: Integer;
function StrIsPixel(aCanvas: TCanvas;const aPixels: Integer; aText: String): Integer;
var
tmp,i: Integer;
aStr: String;
begin
Result:=0;
aStr:=EmptyStr;
for i:=length(atext) downto 1 do
begin
aStr:=copy(aText,1,i);
if aCanvas.TextWidth(aStr)<=aPixels then
begin
Result:=i;
break;
end;
end;
end;
begin
if Column.FieldName<>"MatName" then exit;
DBGrid1.Canvas.FillRect(rect);
i:=StrIsPixel(DBGrid1.Canvas,rect.Right-Rect.Left,ADODataSet1.FieldByname("matname").AsString);
if i<length( ADODataSet1.FieldByname("matname").AsString) then
str:=copy(ADODataSet1.FieldByname("matname").AsString,1,i-3 )+"..."
else
str:=ADODataSet1.FieldByname("matname").AsString ;
DBGrid1.Canvas.TextOut(rect.Left+2,Rect.Top+2,str);
end;
Страницы: 1 вся ветка
Текущий архив: 2004.01.13;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.009 c