Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/23: Рейтинг темы: голосов - 23, средняя оценка - 4.52
Lungren

StringGrid: выделить зеленой рамкой строку с наибольшим элементом

27.06.2008, 22:59. Показов 4419. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем Кто может подсказать как нужно сделать, чтобы выделить зеленой рамкой строку с наибольшим эл-том... в StringGrid, приминительно к задаче:
Элементы матрицы формируются генератором случайных чисел в диапазоне -100..100. Занесение исходных значений в матрицу производится по двойному щелчку мыши. Если в матрице находится несколько искомых значений, то все они выделяются требуемым образом.
Дана целочисленная матрица {Aij} i=1..n, j=1..m (n,mє(6..11)). Конкретный размер задается контекстным меню (строки) и списком ListBox (столбцы). В правом дополнительном столбце выводится наибольший нечетный элемент в каждой строке. При нажатии кнопки строка с наибольшим таким элементом выделяется зеленой рамкой (это и не получается выполнить, не знаю как).


Сама програмка у меня выглядит так (без выделенияя зеленой рамки):

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
procedure TForm1.zapolnenie();
var
k: integer;
i, j: byte;
 
begin
for i:=0 to StringGrid1.RowCount-1 do
  StringGrid1.Cells[StringGrid1.ColCount-1,i]:='';
 
for i:=0 to StringGrid1.RowCount-1 do
  for j:=0 to StringGrid1.ColCount-2 do
    StringGrid1.Cells[j,i]:=IntToStr(Random(200)-100);
 
k:=0;
for i:=0 to StringGrid1.Rowcount-1 do begin
  k:=StrToInt(StringGrid1.Cells[0,i]);
 
    for j:=0 to StringGrid1.ColCount-2 do
      if k < StrToInt(StringGrid1.Cells[j,i]) then
        k:=StrToInt(StringGrid1.Cells[j,i]);
    StringGrid1.Cells[StringGrid1.ColCount-1,i]:=IntToStr(k);
end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  zapolnenie();
end;
 
procedure TForm1.N2Click(Sender: TObject);
begin
  close;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
  for i:=1 to 11 do begin
    ListBox1.Items.Add(inttostr(i));
  end;
end;
 
procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
  StringGrid1.ColCount:=strtoint(ListBox1.Items[listbox1.ItemIndex]);
  zapolnenie();
end;
 
procedure TForm1.N11Click(Sender: TObject);
begin
  StringGrid1.RowCount:=1;
  zapolnenie();
end;
 
procedure TForm1.N21Click(Sender: TObject);
begin
  StringGrid1.RowCount:=2;
  zapolnenie();
end;
 
procedure TForm1.N31Click(Sender: TObject);
begin
  StringGrid1.RowCount:=3;
  zapolnenie();
end;
 
procedure TForm1.N41Click(Sender: TObject);
begin
  StringGrid1.RowCount:=4;
  zapolnenie();
end;
 
procedure TForm1.N51Click(Sender: TObject);
begin
  StringGrid1.RowCount:=5;
  zapolnenie();
end;
 
procedure TForm1.N61Click(Sender: TObject);
begin
  StringGrid1.RowCount:=6;
  zapolnenie();
end;
 
procedure TForm1.StringGrid1DbClick(Sender: TObject);
begin
zapolnenie();
end;
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.06.2008, 22:59
Ответы с готовыми решениями:

Поменяйте в матрице местами строку с наибольшим элементом и строку с наименьшим элементом
Введите матрицу (6*9), в которой есть единственные наибольший и наименьшие элементы и они расположены в разных строках. Поменяйте местами...

В матрице поменять местами строку с наименьшим элементом на строку с наибольшим элементом
В матрице поменять местами строку с наименьшим элементом на строку с наибольшим элементом. Искал на форуме такую, но не нашел (только...

В матрице А(6,6) найти строку с наименьшим элементом и поменять её со столбцом с наибольшим
В матрице А(6,6) найти строку с наименьшем элементом и поменять его со столбцом с наибольшим числом положительных элементов. Напишите код...

3
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
28.06.2008, 20:42
У StringGrid'а есть событие OnDrawCell. Оно работает если свойство DefaultDraw=false. Предназначено это событие как раз для ручной разрисовки ячеек как нам надо.

Что-то типа этого:
Delphi
1
2
3
4
5
6
7
procedure TForm1.StringGrid1DrawCell(Sender:TObject; ...);
begin
    if ARow=[i]Номер_строки_с_наибольшим_элементом[/i] then 
          StringGrid1.Canvas.Pen.Color := clRed
    else StringGrid1.Canvas.Pen.Color := clBlack;
    StringGrid1.Canvas.TextOut(Rect.Left, Rect.Top, StringGrid1.Cell[ACol,ARow]);
end;
0
Lungren
29.06.2008, 00:04
Большое спасибо за помощь , попробую реализовать.
0 / 0 / 1
Регистрация: 09.07.2008
Сообщений: 20
09.07.2008, 14:11
Красивее использовать TextRect в данном случае, вместо TextOut, чтобы текст не вылазил за пределы ячейки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.07.2008, 14:11
Помогаю со студенческими работами здесь

Составить программу-функцию, определяющую строку с наибольшим элементом главной диагонали матрицы
1. Дана матрица Х размером n*n . Составить программу-функцию, определяющую строку с наибольшим элементом главной диагонали матрицы. ...

В матрице найти строку с наибольшим элементом и упорядочить элементы этой строки по убыванию
В матрице А найти строку с наибольшим элементом и упорядочить элементы этой строки по убыванию.Результат записать в матрицу B. Элементы...

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

StringGrid выделить строку
Добрый день, нужна помощь и очень срочно. Условие задачи Дана целочисленная матрица. Конкретный размер задается списком ListBox...

Выделить строку Stringgrid
Здраствуйте, можете подсказать, почему не выделяется нужная строка в данной программе. Я так понимаю, что ошибка где-то здесь: procedure...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru