Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 29
1

Проблемы с прорисовкой цветов в StringGrid

10.03.2018, 20:06. Показов 801. Ответов 16
Метки нет (Все метки)

Помогите со stringgrid

Суть такая: есть две кнопки "да" и "нет". Нажимаю на любую из них, в стрингрид добавляется строка.
№ - счетчик строк.
Код - счетчик ответа в таблице аксесс, чтобы потом можно было его найти
Ответ - это результат нажатия кнопки. Если "да", то ответ "да" и т.п.
Если ответ нажат неверно, то ячейка с ответом должна стать красной. Если верно - то зеленой.

Я чего-то накодировал, без цветов у меня все нормально - просто добавляется строка в стринггрид.
Но с прорисовкой цветов ничего не получается. Как видно, выделяется только одна ячейка и ячейки начинают показывать неправильные ответы.

Буду рад, если кто поможет с правильным кодом.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Изображения
 
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.03.2018, 20:06
Ответы с готовыми решениями:

Проблемы с прорисовкой
Я написал программу, создал Setup проект. После инстала начал проверять, и оказалось, что после...

Есть н цветов разных видов. Составьте все возможные сочетания букетов из всех этих цветов. Количество цветов и их названия вводит пользователь
Есть n цветов разных видов. Составьте все возможные сочетания букетов из всех этих цветов....

Сохранение цветов ячеек в StringGrid после закрытия формы
Я закрашиваю клетки в гриде в определённые цвета заношу их в базу по кнопке и закрываю форму И в...

Проблемы со StringGrid
Хочу заполнить StringGrid y-ком, но что то не получается. unit Unit1; interface uses ...

16
3761 / 3204 / 846
Регистрация: 29.08.2013
Сообщений: 21,168
Записей в блоге: 2
10.03.2018, 22:13 2
сначала покажите "неправильный"
0
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 29
11.03.2018, 13:18  [ТС] 3
Вроде получилось с цветом, но теперь проблема с текстом - все ответы одинаковы

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
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var i:integer;
begin
 
if zalivka_otvetov.Count<>0 then  // zalivka_otvetov - это сделал стринглист, где строка '1' - зеленый цвет, 
                                       //а строка '2' - красный
                                  // чтобы во время перерисовки StringGrid1, он брал цвета для уже имеющихся строк
   begin
 
for i := 0 to zalivka_otvetov.Count-1 do   begin
 
 with StringGrid1 do begin
  if zalivka_otvetov.Strings[i]='1' then
  Canvas.Brush.Color:=clgreen
   else begin
   if zalivka_otvetov.Strings[i]='2' then
   Canvas.Brush.Color:=clRed;
   end;
  
    if ((ACol=2)and(ARow=i+1)) then  begin 
   Canvas.FillRect(Rect);
   Canvas.TextOut(Rect.left+2,Rect.top+4, cells[Acol, rowcount-1])
   end;
  end;
 
   end;

и еще вопрос, почему ячейка закрашивается не полностью?
0
Изображения
 
3761 / 3204 / 846
Регистрация: 29.08.2013
Сообщений: 21,168
Записей в блоге: 2
11.03.2018, 13:50 4
Цитата Сообщение от ЦенительПрекрасного Посмотреть сообщение
и еще вопрос, почему ячейка закрашивается не полностью?
а кто у нас в коде написал
Цитата Сообщение от ЦенительПрекрасного Посмотреть сообщение
Rect.left+2,Rect.top+4
зачем тебе вот эти +2 и +4???
0
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 29
11.03.2018, 13:55  [ТС] 5
чтобы текст был по центру ячейки более-менее, потому как при закрашивании текст смещается. Я думал это только на текст влияет.
0
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 29
11.03.2018, 14:05  [ТС] 6
без смещения вообще по-уродски получается.
В этот раз еще заливка почему-то на первую ячейку вылезла. Причем цвет какой-то светло-зеленый
0
Изображения
 
Эксперт Pascal/Delphi
4731 / 2711 / 840
Регистрация: 04.10.2012
Сообщений: 9,858
11.03.2018, 14:12 7
Цитата Сообщение от ЦенительПрекрасного Посмотреть сообщение
Помогите со stringgrid
Цитата Сообщение от ЦенительПрекрасного Посмотреть сообщение
в таблице аксесс
для работы с БД используется TDBGrid, а не TStringGrid.
Цитата Сообщение от ЦенительПрекрасного Посмотреть сообщение
чтобы текст был по центру ячейки
его нужно выравнивать в самом источнике данных, т.е. в таблице Access, а не при прорисовке ячейки DBGrid.
0
5026 / 3919 / 1296
Регистрация: 14.04.2014
Сообщений: 18,027
Записей в блоге: 18
11.03.2018, 14:22 8
Цитата Сообщение от droider Посмотреть сообщение
его нужно выравнивать в самом источнике данных, т.е. в таблице Access, а не при прорисовке ячейки DBGrid.
не соглашусь
0
Эксперт Pascal/Delphi
4731 / 2711 / 840
Регистрация: 04.10.2012
Сообщений: 9,858
11.03.2018, 14:36 9
Цитата Сообщение от krapotkin Посмотреть сообщение
не соглашусь
почему же? Конечно, можно еще, и в редакторе колонок DBGrid это сделать.

ЦенительПрекрасного, вот так

Проблемы с прорисовкой цветов в StringGrid
0
Эксперт Pascal/Delphi
4731 / 2711 / 840
Регистрация: 04.10.2012
Сообщений: 9,858
11.03.2018, 14:45 10
ЦенительПрекрасного, а окрашиваются ячейки вот так

Проблемы с прорисовкой цветов в StringGrid
0
5026 / 3919 / 1296
Регистрация: 14.04.2014
Сообщений: 18,027
Записей в блоге: 18
12.03.2018, 23:39 11
Цитата Сообщение от droider Посмотреть сообщение
в редакторе колонок DBGrid
соглашусь)
0
пофигист широкого профиля
4411 / 2906 / 823
Регистрация: 15.07.2013
Сообщений: 16,766
13.03.2018, 02:50 12
Цитата Сообщение от droider Посмотреть сообщение
его нужно выравнивать в самом источнике данных, т.е. в таблице Access, а не при прорисовке ячейки DBGrid.
Ну это уже вообще смахивает на бред.
Ну не должен движок БД влиять на визуальное представление данных БД в стороннем приложении.
В самом Акцессе - ради бога/чёрта/ктулху - пусть его разработчике извращаются, если им больше делать нечего.
0
Эксперт Pascal/Delphi
4731 / 2711 / 840
Регистрация: 04.10.2012
Сообщений: 9,858
13.03.2018, 07:44 13
Цитата Сообщение от northener Посмотреть сообщение
это уже вообще смахивает на бред
Спасибо Предусмотрев подобное высказывание (закидывание тухлыми помидорами), я дополнил предыдущий пост.

Не по теме:

Цитата Сообщение от krapotkin Посмотреть сообщение
соглашусь)
)))

0
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 29
14.03.2018, 10:56  [ТС] 14
Спасибо за ответы, сегодня появилось немного времени, начал разбираться с DBgrid. Но это не тот компонент, который мне нужен, т.к. его нужно связывать с БД.

А мне не нужно БД полностью загружать в форму. Суть программы:
Есть БД, в которой:
1.счетчик (код),
2.параметр картинки (цифра от 1 до 3 пока),
3. путь к картинке,
4. правильный ответ (да или нет),
5. описание к ответу.

Параметр можно выбрать один, несколько или все (чек-боксы слева, ими пока не занимался).
Так вот в зависимости от выбранных параметров, нужно чтобы в случайном порядке показывались картинки, соответствующие только этим параметрам.

Кнопки да и нет - это как я отвечу. После нажатия на кнопку в таблице слева (которая раньше была stringgrid) добавляется строка, где № - это просто номер по порядку, код - это код картинки из БД (ключевое поле в таблице),
ответ - ответ, который сделал я, т.е. какую кнопку нажал. Если мой ответ совпадает с ответом из БД, то ячейка зеленая, если нет - красная.

когда заканчиваю отвечать, то могу перейти на любую строку в таблице и она по коду загрузит на форму нужную картинку, а описание на панель внизу, возле кнопки старт.
Если начинаю заново, то таблица очищается.

Все мои знания - это то что нагуглю и пойму или то, что мне ответят здесь. Буду признателен любым ответам опытных людей.
0
Миниатюры
Проблемы с прорисовкой цветов в StringGrid  
3761 / 3204 / 846
Регистрация: 29.08.2013
Сообщений: 21,168
Записей в блоге: 2
14.03.2018, 11:34 15
Цитата Сообщение от ЦенительПрекрасного Посмотреть сообщение
А мне не нужно БД полностью загружать в форму.
это как?

советую нанять человека который сделает за пару дней
0
Эксперт Pascal/Delphi
4731 / 2711 / 840
Регистрация: 04.10.2012
Сообщений: 9,858
14.03.2018, 11:40 16
Цитата Сообщение от ЦенительПрекрасного Посмотреть сообщение
мне не нужно БД полностью загружать в форму
загружайте "частично", отображая только нужные колонки.
1
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 29
14.03.2018, 19:21  [ТС] 17
всем спасибо за ответы, сделал по-колхозански - в стрингриде добавил еще одну колонку, в которую добавляется инфа об ошибке. Если "ошибка", то выделяется красным, если нет - зеленым. Так все работает.

droider, тебе спасибо за участие, благодаря тебе увеличил свои познания в дбгрид, хотя это и не тот компонент, который нужен, кмк. Но все равно тебе +.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.03.2018, 19:21

Проблемы с заполненьем StringGrid
ПОМОГИТЕ найти косяк в коде, с этой проблемой всю голову сломала :wall: Программа запускается но...

Проблема с прорисовкой TextBox
Пишу программку для кроссвордов. Программа берет из xml документа данные и прорисовывает TextBox в...

Непомнятки с прорисовкой контроллов
Здравствуйте. Возникла такая проблема. У меня на форме расположены с десяток textbox-контроллов и...

Задача с прорисовкой квадрата.
Здравствуйте, я только начал изучать java, до этого опыта програмироване не имел, изучаю по книге,...

Задать два перечислимых типа: первый - коды цветов, второй - названия цветов
Задать два перечислимых типа: первый коды цветов, второй - названия цветов. Вводится имя цвета,...

Получить из множества цветов спектра новое множество путем исключения трех цветов
Задано множество, содержащее все цвета светового спектра от красного до фиолетового. ...


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

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

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