1 / 1 / 0
Регистрация: 19.01.2013
Сообщений: 98
1

StingGrid подсветка символов

13.04.2015, 11:09. Показов 1133. Ответов 11
Метки нет (Все метки)

Добрый день! Кто нибудь знает как сделать так, чтобы при нажатии на кнопку, текст StringGrid подсвечивался, т.е:
1) Все цифры были черные;
2) Буквы от А до Я (верхний регистр) - зеленые;
3) Буквы от A до Z (верхний регистр) - синие;
4) Буквы от а до я (нижний регистр) - clLime;
5) Буквы от a до z (нижний регистр) - clTeal;

Очень нужна помощь, желательно с кодом, заранее спасибо
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2015, 11:09
Ответы с готовыми решениями:

Сравнение двух RichEdit и подсветка символов
Добрый день. Помогите с сравнением двух RichEdit и подсветкой символа красным цветом во втором...

StingGrid
ВВести 5 целых чисел с помощью StringGrid, нужно сделать программу которая выведет числа которые...

SpinEdit и StingGrid
Подскажите пожалуйста. Есть 4 компонента SpinEdit на одной форме и StingGrid да другой, как сделать...

Переделать массив. StingGrid
Надо чтобы задачка была без SpinEdit и сокращений вроде SG, а также без randomrange(только random...

11
580 / 531 / 204
Регистрация: 24.01.2012
Сообщений: 1,310
13.04.2015, 12:54 2
Что-то типа такого подойдет?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
  var s:string;
      i:integer;
      r:TRect;
begin
  r:=Rect;
  s:=StringGrid1.Cells[Acol,Arow];
  i:=rect.Left+3;
  While (i<rect.Right-StringGrid1.Font.Size) and (s<>'') do begin
    Case  s[1] of
      'A'..'Z': Begin
        StringGrid1.Canvas.Font.Color:=ClLime;
        StringGrid1.Canvas.TextRect(r,i,rect.Top+2,Copy(s,1,1));
      end;
      'a'..'z': Begin
        StringGrid1.Canvas.Font.Color:=ClTeal;
        StringGrid1.Canvas.TextRect(r,i,rect.Top+2,Copy(s,1,1));
      end;
      'А'..'Я': Begin
        StringGrid1.Canvas.Font.Color:=ClGreen;
        StringGrid1.Canvas.TextRect(r,i,rect.Top+2,Copy(s,1,1));
      end;
      'а'..'я': Begin
        StringGrid1.Canvas.Font.Color:=ClBlue;
        StringGrid1.Canvas.TextRect(r,i,rect.Top+2,Copy(s,1,1));
      end;
    end;
    inc(i,stringgrid1.Font.Size-1);
    r.Left:=i;
    Delete(s,1,1);
    StringGrid1.Canvas.Font.Color:=StringGrid1.Font.Color;
  end;
end;
1
1 / 1 / 0
Регистрация: 19.01.2013
Сообщений: 98
13.04.2015, 12:57  [ТС] 3
edukra, Спасибо
0
580 / 531 / 204
Регистрация: 24.01.2012
Сообщений: 1,310
13.04.2015, 13:02 4
Лучший ответ Сообщение было отмечено Kseniya77 как решение

Решение

Ой, забыл про остальные символы.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
  var s:string;
      i:integer;
      r:TRect;
begin
  r:=Rect;
  s:=StringGrid1.Cells[Acol,Arow];
  i:=rect.Left+3;
  While (i<rect.Right-StringGrid1.Font.Size) and (s<>'') do begin
    Case  s[1] of
      'A'..'Z': Begin
        StringGrid1.Canvas.Font.Color:=ClLime;
        StringGrid1.Canvas.TextRect(r,i,rect.Top+2,Copy(s,1,1));
      end;
      'a'..'z': Begin
        StringGrid1.Canvas.Font.Color:=ClTeal;
        StringGrid1.Canvas.TextRect(r,i,rect.Top+2,Copy(s,1,1));
      end;
      'А'..'Я': Begin
        StringGrid1.Canvas.Font.Color:=ClGreen;
        StringGrid1.Canvas.TextRect(r,i,rect.Top+2,Copy(s,1,1));
      end;
      'а'..'я': Begin
        StringGrid1.Canvas.Font.Color:=ClBlue;
        StringGrid1.Canvas.TextRect(r,i,rect.Top+2,Copy(s,1,1));
      end;
      Else begin
        StringGrid1.Canvas.Font.Color:=ClBlack;
        StringGrid1.Canvas.TextRect(r,i,rect.Top+2,Copy(s,1,1));
      End;
    end;
    inc(i,stringgrid1.Font.Size-1);
    r.Left:=i;
    Delete(s,1,1);
    StringGrid1.Canvas.Font.Color:=StringGrid1.Font.Color;
  end;
end;
1
5234 / 4086 / 1342
Регистрация: 14.04.2014
Сообщений: 18,718
Записей в блоге: 18
13.04.2015, 13:25 5
а что, все буквы одной ширины?
0
1 / 1 / 0
Регистрация: 19.01.2013
Сообщений: 98
13.04.2015, 15:11  [ТС] 6
edukra, А как не красить 0 - ой столбец и 0-ую строку?

Добавлено через 24 минуты
krapotkin, Нет
0
580 / 531 / 204
Регистрация: 24.01.2012
Сообщений: 1,310
13.04.2015, 15:36 7
Цитата Сообщение от Kseniya77 Посмотреть сообщение
А как не красить 0 - ой столбец и 0-ую строку?
Вместо
Delphi
1
 While (i<rect.Right-StringGrid1.Font.Size) and (s<>'') do begin
нужно
Delphi
1
 While (i<rect.Right-StringGrid1.Font.Size) and (s<>'') and (acol>0) and (arow>0) do begin
1
5234 / 4086 / 1342
Регистрация: 14.04.2014
Сообщений: 18,718
Записей в блоге: 18
13.04.2015, 15:38 8
Цитата Сообщение от edukra Посмотреть сообщение
inc(i,stringgrid1.Font.Size-1);
а тут написано - одинаковые
и интересно, как фонт.сайз соотносится с шириной буквы в пикселях?

Цитата Сообщение от Kseniya77 Посмотреть сообщение
как не красить 0 - ой столбец и 0-ую строку
выучить использование if - then
подсказко: ACol, ARow - это колонка и строка, которую закрашиваем прямо вот щас
1
1 / 1 / 0
Регистрация: 19.01.2013
Сообщений: 98
13.04.2015, 15:39  [ТС] 9
edukra, Огромное спасибо!)))
0
580 / 531 / 204
Регистрация: 24.01.2012
Сообщений: 1,310
13.04.2015, 15:39 10
Цитата Сообщение от krapotkin Посмотреть сообщение
а что, все буквы одной ширины
С расстоянием между буквами проблема. Хоть таблицу ширин составляй. Или, что проще, можно использовать моноширинный шрифт, типа "курьер"
0
1 / 1 / 0
Регистрация: 19.01.2013
Сообщений: 98
13.04.2015, 15:49  [ТС] 11
krapotkin, Со шрифтом уже разобралась и все теперь норм, а циклы буду зубрить, это у меня проблема большая

Добавлено через 9 минут
Всем большое спасибо, особенно edukra!
0
5234 / 4086 / 1342
Регистрация: 14.04.2014
Сообщений: 18,718
Записей в блоге: 18
13.04.2015, 15:50 12
есть чудная функция специально для этих целей
StringGrid1.Canvas.TextWidth()
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2015, 15:50
Помогаю со студенческими работами здесь

Запись, StingGrid и удаление
Добрый вечер. Возникла проблема. на форме есть StringGrid в него заносится информация из StringGrid...

Delphi, StingGrid, lines
Помогите пожалуйста, нужно сделать линии В STRINGGRID'е так, как на рисунке, цифры по центру, и...

Расчет по заданной строке в StingGrid
Кароч, такая лабуда, надо подсчитать стоимость оплаты по заданному телефону, он вноситься в Edit1....

Как заменить StingGrid на DBGrid
Помогите, пожалуйста. Вот код для Stringgrid: StringGrid1-&gt;Cells = ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru