Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2008, 22:09   #1
Randomize
 
Аватар для Randomize
 
Регистрация: 09.10.2008
Сообщений: 5
Вопрос Компонент DBImage

Здравствуйте у меня вот такая проблема:
Делаю программу-игрушку, что то вроде игры для детей на запоминание предметов и их расположения на доске. Есть матрица из 25 (5х5) компонентов типа DBImage при начале работы они все заполнены изображением с однородным фоном (типа незаполненные)
Зытем при нажатии на кнопку «начать игру» они заполняются рандомным образом любым изображением из вспомогательной папки где лежат изображения. И еще 4 DBImage поля для будущей проверки.
Затем по нажатию кнопки «Начать проверку» все картинки закрываются и сбоку появляются 4 окна с возможными изображениями для проверки, затем пользователь выбирает одно из предложенных изображений щелкая на него мышью а затем по закрытым полям DBImage заполняя тем самым их этими картинками.
После нажатия на кнопку «Проверить» программа должна показать число ошибок
Но вот беда она не показывает (тоесть показывает неправильно )
Проверка имеет вид:

procedure TForm1.Button2Click(Sender: TObject);
var
och,i:byte;
MyComponent: TComponent;
begin
och:=0; //обнуляем число ошибок
for i:=1 to 25 do
begin
MyComponent:=FindComponent('DBImage '+ IntToStr(i)); //перебор элементов
Znache:=TDBImage(MyComponent).Pictu re; //вытаскиваем картинку из элемента
if not(Znache=ArMatr[i]) then //сравниваем с массивом для проверки
och:=och+1; //считаем ошибки
end;
Label1.Caption:='Ошибок '+ IntToStr(och);
end;
Для справки

Массив ArMatr: Array [1..25]of TPicture;//описан в самом Unit1.pas
//заполняется на шаге «начать игру»
Дело в том что if not(Znache=ArMatr[i]) всегда ложно!
А весь проект можно посмотреть тут:
http://narod.ru/disk/3091468000/programma.rar.html
Люди деляться на 10 типа: тех кто понимают бинарный код и и остальных...
Randomize вне форума Ответить с цитированием
Старый 09.10.2008, 22:27   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
при нажатии на кнопку «начать игру» они заполняются рандомным образом любым изображением из вспомогательной папки где лежат изображения
А при чем тут DBImage?
Где тут базы используются?
И кто вас научил так изображения сравнивать???
mihali4 вне форума Ответить с цитированием
Старый 09.10.2008, 22:39   #3
Randomize
 
Аватар для Randomize
 
Регистрация: 09.10.2008
Сообщений: 5
По умолчанию

DBImage выглядит лучше чем Image мне нужны были зоны которые четко видны.
Если не DBImage то что предложите?
Что базы касается, я хоть про это свойство компонента из названия догадался но это ведь необязательно ведь программа то работает и нужный визуальный эффект достигнут и без лишних компонентов на форме.
Если вы не поняли вопрос то напишу коротко:
Что неправильного в сравнении?
Люди деляться на 10 типа: тех кто понимают бинарный код и и остальных...
Randomize вне форума Ответить с цитированием
Старый 09.10.2008, 23:04   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Увы, но сравнивать нужно, как минимум, попиксельно... И то этот метод годится только для примитивных изображений.
А своим "способом" вы так и будете получать всегда ложный результат.
У вас должен сработать самый простой вариант - нумерация картинок. Причем те самые 4 картинки для проверки вы можете просто копировать из своего массива, соответственно запоминая в некоей переменной номер правильной картинки.
Цитата:
DBImage выглядит лучше чем Image
Ну, наложите на Image сверху, например, Bevel и расположите все имэджи на белой панели, или на красной...
Просто вы подцепляете к проекту целый класс DBCtrls, причем совершенно неоправданно.

Последний раз редактировалось mihali4; 09.10.2008 в 23:15.
mihali4 вне форума Ответить с цитированием
Старый 10.10.2008, 20:13   #5
Randomize
 
Аватар для Randomize
 
Регистрация: 09.10.2008
Сообщений: 5
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Ну, наложите на Image сверху, например, Bevel и расположите все имэджи на белой панели, или на красной...
Просто вы подцепляете к проекту целый класс DBCtrls, причем совершенно неоправданно.
Нуу... как варриант. А есть в компоненте какие нибуть текстовые параметры невлияющие на его внешний вид, яб тогда мог проверку по ним делать ведь с STRING или INTEGER работать легче чем с TIMAGE?
Люди деляться на 10 типа: тех кто понимают бинарный код и и остальных...
Randomize вне форума Ответить с цитированием
Старый 10.10.2008, 20:29   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Возьмите TPanel. Установите ему белый цвет и свойство BorderStyle=bsSingle. А на панель положите TImage и установите ему свойство Align=alClient. Запустите проект.
Разве это не заменитель DBImage? И текст - пожалуйста...
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DBImage i Accsess Coda89 БД в Delphi 5 28.05.2008 20:15
Размер картинок DBImage Crookers Общие вопросы Delphi 1 12.05.2008 08:52
DBImage + jpeg + gif Cyn4uk БД в Delphi 10 23.12.2007 19:24
Связь ComboBox с DBImage и DBMemo gane4ka Помощь студентам 8 14.12.2007 17:52