Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2007, 12:25   #1
lis_abu
 
Регистрация: 28.09.2007
Сообщений: 7
По умолчанию разноцветный WinProcs.DrawText

как нарисовать текст разным цветов при наличии DT_WORDBREAK (перенос по словам внутри прямоугольника)
Format := DT_LEFT or DT_WORDBREAK;
WinProcs.DrawText(Canvas.Handle, C, StrLen(C), rect, Format);
в частоности это нужно внутри ячеек dbgrid, Может есть другой метод.
lis_abu вне форума Ответить с цитированием
Старый 24.10.2007, 12:41   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Уж ни ето ли тебе нужно?:

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var te,ax,ay,i:integer;s:string;
begin
s:=StringGrid1.Cells[acol,arow];
ax:=Rect.Left; ay:=Rect.Top;
StringGrid1.Canvas.FillRect(rect);
for i:=1 to length(s) do begin
StringGrid1.Canvas.Font.Color:=rand om(255*155*86);
StringGrid1.Canvas.Textout(ax,ay,s[i]);
ax:=ax+StringGrid1.Canvas.TextWidth (s[i]);
if ax>rect.Right then begin
ax:=Rect.Left;ay:=ay+StringGrid1.Ca nvas.TextHeight(s[i]);
end;
end;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.10.2007, 13:30   #3
lis_abu
 
Регистрация: 28.09.2007
Сообщений: 7
По умолчанию почти но не совсем

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var te,ax,ay,i:integer;s:string;
begin
s:=StringGrid1.Cells[acol,arow];
ax:=Rect.Left; ay:=Rect.Top;
StringGrid1.Canvas.FillRect(rect);
for i:=1 to length(s) do begin
StringGrid1.Canvas.Font.Color:=rand om(255*155*86);
StringGrid1.Canvas.Textout(ax,ay,s[i]);
ax:=ax+StringGrid1.Canvas.TextWidth (s[i]);

\\ если строка 'qwer asdfg' а размер прямоугольник к примеру по
\\ букве 's' то DT_WORDBREAK перенесет на вторую строку 'sdfg'
\\ и условие ниже отработает неправильно;

if ax>rect.Right then begin
ax:=Rect.Left;ay:=ay+StringGrid1.Ca nvas.TextHeight (s[i]);
end;
end;
end;


p.s. Спрасибо за участие
lis_abu вне форума Ответить с цитированием
Старый 24.10.2007, 13:36   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так я потому и не использовал DT_WORDBREAK.
P.S. пожалуйста.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.10.2007, 13:41   #5
lis_abu
 
Регистрация: 28.09.2007
Сообщений: 7
По умолчанию этот вариант я не рассматривал

преносить не пословам а как попало по буквам не очень красиво смотрится , хотя если других вариантов нет придется писать аналог твоей процедуры со вставкой побелов перед словом которое не помещается целиком. Интересно было найти более красивое решение.
lis_abu вне форума Ответить с цитированием
Старый 24.10.2007, 13:44   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Эт верно, а что ты там такое пишеш, еси не секрет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.10.2007, 14:01   #7
lis_abu
 
Регистрация: 28.09.2007
Сообщений: 7
По умолчанию не секрет

переписываю интерфес бухучета , у нас в ДОСе справляется с любыми
учетными задачами и особой потребности как бы нет но задолбали рассказы об устаревшем интерфейсе плюс появились дополнительные идеи которое в ДОС не удается реализовать

Причем рассказы об устаревшем интерфейсе беспокоят менее всего т.к сам бухучет изобретен толи в 14 веке толи гдето близко к этому и до сих пор не устарел


Мы работаем на внедрения в основном как бухгалтера и менее всего как программисты в силу этого уровень бухгалтерский выше любого встретившегося бухгалтера за последние 15 лет а на уровень программиста высокой квалификации не претендуем
lis_abu вне форума Ответить с цитированием
Старый 24.10.2007, 14:09   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А чего на Делфе? Вроде 1С популярнее и луче для этого подходит.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.10.2007, 14:29   #9
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Цитата:
А чего на Делфе? Вроде 1С популярнее и луче для этого подходит.
А это как на башорге про 1С "Как будто программу на бейсике перевели промтом..."
пыщь
JTG вне форума Ответить с цитированием
Старый 24.10.2007, 14:40   #10
lis_abu
 
Регистрация: 28.09.2007
Сообщений: 7
По умолчанию 1c

1с кроме красивых картинок , распечатки красивых первичных документов , назавания и обещания что посадим обезъянку она введет первичку а все остальное программа сделает сама , к бухучету отношения не имеет
Одна маленькая проблема реалий нашего рынка учет не нужен руководителям предприятий в большинстве, а тем кому нужен почемуто приходят к нам
lis_abu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В Memo сделать так, чтобы текст был разного цвета, разноцветный memo Artem Компоненты Delphi 3 07.09.2007 13:40