Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.24;
Скачать: CL | DM;

Вниз

DrawCell в StringGrid. Хм...   Найти похожие ветки 

 
Cosinus ©   (2004-10-07 14:45) [0]

Монитор порта... Окно in/out байтов реализовано на основе StringGrid... In байты отображаются одним цветом, Out, соответственно другим... В упор не пойму, как сделать вышеприведенное не используя глобальные переменные(кол-во Cells до и после). То есть необходим DrawCell с теми же параметрами, что и обычный + Color:TColor. Подскажите, как это можно сделать.


 
КаПиБаРа ©   (2004-10-07 14:53) [1]

Cosinus ©   (07.10.04 14:45)
Что "как сделать"? Приложение без глобальных переменных или DrawCell с теми же параметрами?

=======================================
Пишите коротко и неясно.
(Наполеон I - составителям Конституции)
=======================================


 
Суслик ©   (2004-10-07 14:54) [2]


>  Cosinus ©   (07.10.04 14:45)

Ты бы написал все по пунктам:
1. Нужно то-то и то-то
2. сделал то-то и то-то
3. не пойму то-то и то-то.

------------
Лично я вопроса не понял.


 
Леприкон ©   (2004-10-07 14:56) [3]

Сколько столбцов в гриде? Кол-во строк постоянно меняется?


 
Cosinus ©   (2004-10-07 15:15) [4]


> КаПиБаРа ©   (07.10.04 14:53) [1]


> Суслик ©   (07.10.04 14:54) [2]

1)Необходимо, чтобы "In байты отображаются одним цветом, Out, соответственно другим... "
2)При каждом Read/Write с порта вызывается процедура, которая раскидывает байты по StringGrid (в каждой ячейке один байт). Могу сделать, чтобы строки или колонки, подчиняясь каким-либо условиям выводились одним, либо другим цветом
3)Исходя из 2, не вижу решения, как правильно поставить условие в DrawCell, чтобы при ее вызове проверялось, IN ли эти байты или OUT...


 
Cosinus ©   (2004-10-07 15:16) [5]


> Леприкон ©   (07.10.04 14:56) [3]

Сесенно :)))


 
Суслик ©   (2004-10-07 15:20) [6]


> [4] Cosinus ©   (07.10.04 15:15)

Решение стандартное - иметь еще двумерный массив boolean. Размер его равен размеру грида.

При чтении из порта:
1. кадать в грид
2. кидать в массив

При перерисовке см. что в соответстующем эл-те массива - true, значит in, false, занчит out


 
Cosinus ©   (2004-10-07 15:45) [7]


> Суслик ©   (07.10.04 15:20) [6]

Логично. Спасибо.
ЗЫ Этот массив - это та же глоб. переменная(чего я использовать и не хотел), но просто довольно элегантно, поэтому еще раз спасибо.


 
Суслик ©   (2004-10-07 15:51) [8]


>  [7] Cosinus ©   (07.10.04 15:45)

Что ты называешь глобальной переменной? Есть ощущение, что термин плохой.

Этот массив может лежать в private полях формы, которая выводит грид. Это же не глобальная переменная...


 
Cosinus ©   (2004-10-07 16:04) [9]


> Суслик ©   (07.10.04 15:51) [8]

Ну да, наверно неправильно выразился, ну я так понял, что ты понял, что я имел ввиду :))
Кстати возник еще один вопрос по теме. Сколько байт занимает boolean переменая, и отсюда, сколько байт будет занимать массив порядка 20х1000000(миллион, чтобы нолики не считать:)???


 
Суслик ©   (2004-10-07 16:06) [10]


>  20х1000000

ТЫ в своем уме :))))

У какой грид тебе пропашет матрицу 20 х млн ? Это очень много.
Меняй условия задачи.

ЗЫ
1) 1 байт.
2) примерно 20мб будет занимат.


 
Cosinus ©   (2004-10-07 16:16) [11]


> Cosinus ©   (07.10.04 16:04) [9]

А разве вот это
property Cols[Index: Integer]: TStrings read GetCols write SetCols;
property Rows[Index: Integer]: TStrings read GetRows write SetRows;

и вот это ;)
Integer –2147483648..2147483647 signed 32-bit
не означает, что кол-во Cells у Grid может быть в пределах Integer? Или я совсем чего то не понимаю?


 
Суслик ©   (2004-10-07 16:19) [12]


>  [11] Cosinus ©   (07.10.04 16:16)

да как тебе сказать.
когда речь идет про млны, всегда стоит подумать о том, может что-то не то.

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

Может это и не ничего, но как минимум работать будет тормозно.

Проверь.


 
Skeptik   (2004-10-07 16:19) [13]

> При каждом Read/Write с порта вызывается процедура, которая
раскидывает байты по StringGrid

пусть эта процедура прописывает в соответствующий object StringGrid"а признак направления, например:

StringGrid.Cells[X, Y] := "Что пришло";
StringGrid.Objects[X, Y] := pointer(integer(...)); // если IN - 0, OUT - 1
можно вообще код цвета записать

в DrawCell вставляем:
...
with TStringGrid(Sender), Canvas do begin
 if boolean(integer(Objects[ACol, ARow])) then
   Brush.Color := clRed
 else
   Brush.Color := clGreen;
end;
...
или если цвет, то
...
with TStringGrid(Sender), Canvas do begin
 if (integer(Objects[ACol, ARow]) > 0) then
   Brush.Color := TColor(integer(Objects[ACol, ARow]));
end;
...


 
Cosinus ©   (2004-10-07 16:42) [14]


> Skeptik   (07.10.04 16:19) [13]

Спасибо огромное, это решило все проблеммы..

> Суслик ©  

А мы "матрицы, глобальные и не глобальные переменые"... Э-э-х :)))


 
Суслик ©   (2004-10-07 16:43) [15]


>  [14] Cosinus ©   (07.10.04 16:42)

вот я на тебя посмоюрю когда прийдется увеличить количество данных :)))
сильно логику нужно будет менять. .

ЗЫ. Подумай, все-таки про объем. Недетский он:)))



Страницы: 1 вся ветка

Текущий архив: 2004.10.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.036 c
1-1096648518
Justas
2004-10-01 20:35
2004.10.24
Полупрозрачное изображение


14-1097091105
DRK
2004-10-06 23:31
2004.10.24
Работа с телефоном Samsung X600


14-1096545021
1008
2004-09-30 15:50
2004.10.24
Существует ли возможность изменить цвет заголовка у TabSheet?


3-1096013860
Term
2004-09-24 12:17
2004.10.24
Автоинкремент в MSSQL2000


8-1090764860
DDDeN
2004-07-25 18:14
2004.10.24
Подать звук по разным каналам





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский