Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.021 c
14-37907
medo
2003-12-21 04:15
2004.01.13
TopSpeed Odbc


6-37827
AlexanderSK
2003-11-10 16:54
2004.01.13
Несколько HTTP запросов один за одним


4-37991
Dunmer
2003-11-10 11:31
2004.01.13
Как оптимизировать Ресолв ДНС


3-37507
serg128
2003-12-16 18:28
2004.01.13
Как определить в гриде текущй тип поля?


1-37683
Silver_
2003-12-19 12:03
2004.01.13
Как отловить момент создания форм