Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
pek
0 / 0 / 1
Регистрация: 27.04.2016
Сообщений: 363
1

В StringGrid раскрасить строки и добавить hint

07.09.2017, 05:30. Просмотров 280. Ответов 5
Метки нет (Все метки)

здравствуйте/ меня интересует два вопроса.
1. в stringgrig если в столбике 6 присутствует 0 то всю строку сделать зелёной. как это осуществить?
2. как привязать hint к конкретным столбикам. мне надо к 6 и 7 столбики разные всплывающие подсказки
заранее благодарен
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2017, 05:30
Ответы с готовыми решениями:

Раскрасить строки stringgrid
Здравствуйте. Подскажите, как можно покрасить в stringgrid четную строку одним цветом, а нечетную...

Подсказки Hint в StringGrid
Всем привет! При создании темы из предложенных форумом похожих одна относится к аналогичной моей (...

Подсказки (Hint) в StringGrid
Здравствуйте. Мне нужно сделать так, чтобы при наведении (клике) мышкой на ячейке в определенной...

Отображение номера ячейки StringGrid в Hint
У меня есть StringGrid с одной строчкой и некоторым кол-вом колонок. По наведении мыши на...

Как в StringGrid програмно вызвать показ Hint напротив ячейки
Всем привет. Задача такая: Есть StringGrid, нужно у ячейки c индексами x и y вывести Hint по...

5
Massaraksh7
311 / 264 / 87
Регистрация: 27.05.2017
Сообщений: 1,350
07.09.2017, 05:42 2
1. В OnDrawCell анализировать значение в столбике 6 текущей строки, и если 0, то фон сделать зеленым, иначе - обычным.
2. В MouseMove анализировать попадание курсора на соответствующий столбец и активировать соответствующий Hint.
1
BOGG ART
578 / 446 / 146
Регистрация: 09.12.2013
Сообщений: 2,384
Записей в блоге: 2
07.09.2017, 05:44 3
  1. Точно так же как в куче подобных тем про раскрашивание, только условие другое написать.
  2. Нельзя "привязать Hint", но можно менять его значение в событиях мыши.
1
pek
0 / 0 / 1
Регистрация: 27.04.2016
Сообщений: 363
07.09.2017, 06:39  [ТС] 4
В OnDrawCell анализировать
это же при нажатии мыши.
у меня работать будет что то в виде калькулятора и чтобы сразу строки цветные были после подсчёта.

В MouseMove анализировать
по подробней плиз.

но можно менять его значение в событиях мыши.
по подробней плиз.

Добавлено через 23 минуты
с цветом вроде разобрался подскажите насчёт hint
0
BOGG ART
578 / 446 / 146
Регистрация: 09.12.2013
Сообщений: 2,384
Записей в блоге: 2
07.09.2017, 08:27 5
Цитата Сообщение от pek Посмотреть сообщение
В OnDrawCell анализировать
это же при нажатии мыши.
"Cell" это "ячейка", а "Draw" это "рисование".

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
Var OldHint: String;
Begin
With Sender As TStringGrid Do
      Begin
      OldHint:=Hint;
      With MouseCoord(X, Y) Do
            Case X Of
                  -1:
                        Hint:='Пусто';
                  5:
                        Hint:='Плохо';
                  6:
                        Hint:='Хорошо';
                  Else
                        Hint:='Пофик';
                  End;
      If (OldHint<>Hint) Then
            Application.ActivateHint(ClientToScreen(Point(X, Y)));
      End;
End;
2
Puporev
Модератор
56570 / 43270 / 29914
Регистрация: 18.05.2008
Сообщений: 102,925
07.09.2017, 10:59 6
Цитата Сообщение от pek Посмотреть сообщение
в stringgrig если в столбике 6 присутствует 0 то всю строку сделать зелёной.
Для примера.
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
39
40
41
42
43
44
45
const n=8;
var
  Form1: TForm1;
  a:array of array of integer;
  k:byte;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
randomize;
setlength(a,n,n);
for i:=0 to n-1 do
for j:=0 to n-1 do
 begin
  a[i,j]:=random(3);
  StringGrid1.Cells[j,i]:=inttostr(a[i,j]);
 end;
k:=1;
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var i,j:integer;
begin
if k=1 then //чтобы закрашивало после ввода значений
 begin
  for i:=0 to StringGrid1.RowCount-1 do
   begin
    if StringGrid1.Cells[5,i]='0' then
     begin
      for j:=0 to n-1 do
      if(ARow=i)and(ACol=j)then
      with StringGrid1.Canvas do
       begin
        Brush.Color:=clLime;
        FillRect(Rect);
        TextOut(Rect.Left+1,Rect.Top+1,StringGrid1.Cells[ACol,ARow]);
       end;
     end;
    end;
 end;
end;
2
07.09.2017, 10:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2017, 10:59

Неясный HINT [Hint] Unit1.pas(2910): Value assigned to 'a' never used
var a:integer; . . . . a:=0; . . . .

Перевод строки в Hint CoolTrey
Вообщем надо сделать перевод строки в хинте как не знаю я делаю вот так:...

Раскрасить строки DbGrid
Подскажите как выделить строки с одинаковым содиржимиым допустим есть следйющие строки 1 2 2...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru