Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 909
от 29.08.2007, 19:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 463, Экспертов: 73
В номере:Вопросов: 2, Ответов: 5


Вопрос № 99499: Здравствуйте уважаемые эксперты!У меня возникла небольшая проблемка .В моей програмке я использую некую переменную tmp куда в процессе вычисления заносятся различные значения как целые так и дробные,поэтому я и описал её тип как real, далее эти значе...
Вопрос № 99538: Уважаемые эксперты помогите решить проблему. Работаю с компонентом CxGrid от DevGroup нужно в ячейке таблицы отобразить иконку, как это можно сделать? если никто не работал с CxGrid, то как можно то же самое сделать у обычного грида...

Вопрос № 99.499
Здравствуйте уважаемые эксперты!У меня возникла небольшая проблемка .В моей програмке я использую некую переменную tmp куда в процессе вычисления заносятся различные значения как целые так и дробные,поэтому я и описал её тип как real, далее эти значения попадают в таблицу стрин грида.Но иногда полученное в tmp значение должно являтся кодом символов ASCII и соответствено в таблицу я должен заносить сам символ,а иногда полученное число я должен заносить в таблицу в 16ричном виде.Так как мне выйти из этого положения.То есть я так понимаю для ascii я должен делать проверку является ли число целое и 8 битное а дальше что,а для 16ричного как?

Отправлен: 24.08.2007, 07:21
Вопрос задал: Зотов Геннадий Александрович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Карабанов Алексей
Здравствуйте, Зотов Геннадий Александрович!
Итак у Вас стоит задача определить смысл значения, хранящегося в переменной и в зависимости от этого представить ее в том или ином виде.

Вообще-то для Вашей ситуации лучше всего использовать несколько переменных, т.к. типы значений, по вашим словам и целые и дробные (т.е. вещественные). В типе real значение хранится всегда вещественное и Вам придется преобразовывать его к целому типу.

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

Если же Вам обязательно обходиться одной переменной, то скажу пару слов по поводу щестнадцатиричных значений.
Коды ASCII в принципе тоже могут быть представлены шестнадцатиричными значениями.
Поэтому Вам удобнее все значения представлять в шестнадцатиричном коде, а затем проверять диапазон: коды ASCII находятся в диапазоне от 00 до FF, если вам в таблице не нужно отображать управляющие символы, то просто исключаете символы от 00 до 1F и отображаете символ в таблице. Ну, а те значения которые должны быть представлены в шестнадцатиричном виде просто будут отображаться в таблице. Дробные числа представлять в шестнадцатиричном коде излишне да и сложно, поэтому как я уже сказал лучше использовать несколько переменных.


---------
Дорогу осилит идущий!
Ответ отправил: Карабанов Алексей (статус: 8-ой класс)
Ответ отправлен: 24.08.2007, 08:02
Оценка за ответ: 4
Комментарий оценки:
спасибо только было бы хорошо привести в примере ф-ции перевода

Отвечает: sir henry
Здравствуйте, Зотов Геннадий Александрович!
Здесь нельзя дать однозначный алгоритм, т.к. беззнаковое однобайтное число, которое используется для представления символа, может быть как символом, так и числом. Здесь Вы сами должны выбрать алгоритм определения, символ у Вас или число.
1. Для преобразования байта в символ служит функция:
- Chr(Round(Ваше_число)).
За контролем значения числа следите сами, т.к. если Ваше число превысит значение 255, то в символ оно преобразуется всё равно, но это будет неверный символ, сами понимаете. :)
2. Предыдущий эксперт написал, что хранить числа с плавающей точкой в шестнадцатиричном виде нет никакого смысла в силу ненаглядности, поэтому будем преобразовывать только целочисленные значения.
Шестнадцатирично Вы сможете отображать только строку, а не собственно число. :) Поскольку при занесении в StringGrid Вы и так число преобразуете в строку, осталось решить, как придать ей шестнадцатиричный вид. Для этого можно использовать функцию преобразования:
- IntToHex(Round(Ваше_число), 2);
Здесь Ваше_число преобразуется к целочисленному формату, а потом преобразуется в шестнадцатиричное представление (строку).
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 24.08.2007, 09:07
Оценка за ответ: 5
Комментарий оценки:
спасибо принцип понятен


Вопрос № 99.538
Уважаемые эксперты помогите решить проблему.

Работаю с компонентом CxGrid от DevGroup нужно в ячейке таблицы отобразить иконку, как это можно сделать?

если никто не работал с CxGrid, то как можно то же самое сделать у обычного грида?
Отправлен: 24.08.2007, 14:27
Вопрос задал: Кэр Лаэда (статус: Студент)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Sandy
Здравствуйте, Кэр Лаэда!
у обычного грид прорисовку можно делать на событие OnDrawCell, если Вы установите свойство DefaultDrawing := false. но при этом придется делать всю отрисовку самому.
Ответ отправил: Sandy (статус: 9-ый класс)
Ответ отправлен: 24.08.2007, 15:03
Оценка за ответ: 3
Комментарий оценки:
то что грид можно перерисовывать я сам знаю, а каким образом туда запихнуть иконку.

Отвечает: Delph
Здравствуйте, Кэр Лаэда!

Используйте событие Grid'а OnDrawDataCell. Здесь можно прорисовать ячейку как угодно (например, сделать текст золотистым на синем фоне, нарисовать что-нибудь). Когда мне нужно было прорисовывать какие-то изображения в гриде, я загружал их в ImageList, а затем использовал команду:

ImageList.Draw(Grid.Canvas, Rect.Right - 16, Rect.Top + 1, 8, True);

<Rect.Right - 16, Rect.Top + 1> - для прорисовки изображения в правой части ячейки (Rect передаётся в обработчик события и означает прямоугольную область экрана, принадлежащую ячейке), 8 - индекс загруженной картинки. Что означает параметр Enabled, я не помню, но ставил всегда True.

Ещё одна связанная с прорисовкой команда: Grid.DefaultDrawDataCell(Rect, Field, State);
Насколько помню, она прорисовывает текст в ячейке после того, как изменены настройки этого текста (параметры шрифта, цвет, фон). В моей программе Grid.DefaultDrawDataCell находится после того, как настроен вывод текста, но до ImageList.Draw.

Разумеется, всё, что я здесь описал, должно быть внутри обработчика OnDrawDataCell.
---------
Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.
Ответ отправил: Delph (статус: 8-ой класс)
Ответ отправлен: 24.08.2007, 15:06
Оценка за ответ: 5
Комментарий оценки:
спасибо, большое то что нужно

Отвечает: Примак Руслан Николаевич
Здравствуйте, Кэр Лаэда!

Для соответсвующей колонки View'era, который содержит ваш грид, в CustomDrawCell необходимо описать механизм отрисовки иконки. Все иконки храняться в IndicationImageList. Пример в приложении. В качестве View я использую DBTableView.

Приложение:

Ответ отправил: Примак Руслан Николаевич (статус: 3-ий класс)
Ответ отправлен: 27.08.2007, 16:41
Оценка за ответ: 4
Комментарий оценки:
Спасибо, я уже сделал, с помощью ImageComboBox очень кстати эффективный метод


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.57 от 25.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное