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

Программирование на Delphi

  Все выпуски  

Программирование на Delphi (выпуск 76)


Программирование на DELPHI
Выпуск #76 (29 октября 2007 г.)

Разделы сайта:

Delphi.int.ru

Новости сайта
Регистрация »
Файловый архив
Статьи
Компоненты
Plug-in's
Документация
Исходники
Изображения
Игры
Программы
Рассылки сайта
F.A.Q.

IRC-канал сайта:

Сервер: irc.dalnet.ru (либо irc.tic-tac.ru)
Порт: 6667
Канал: #delphiintru

Ждём Вас на нашем канале!

Доброго времени суток, уважаемые читатели!

Основные новости сайта касаются в основном экспертной системы Delphi.int.ru Expert.

1. Введена полноценная поддержка тега <code> - теперь фрагменты программного кода, заключённые в этот тег, автоматически подсвечиваются - код становится похожим на тот, какой мы обычно наблюдаем в редакторе... На данный момент имеется поддержка Delphi, Pascal и Assembler. Подробнее »

2. Введены дополнительные RSS-ленты - для последних заданных вопросов, ответов и новостей. Подробнее »

3. Для экспертов добавлена возможность выбора отдельных разделов, вопросы из которых будут поступать на e-mail. А в составе экспертов была проведена массовая чистка - неактивные эксперты были исключены из состава.

4. Создан общий адрес службы поддержки по всем вопросам, касающимся сайта - support at delphi.int.ru. Просьба все письма с вопросами касаемо работы сайта отправлять по этому адресу.

5. Несколько дней назад был задан 1000-ый вопрос - первая значительная отметка. Скоро был задан вопрос, номер которого является программистской отметкой - вопрос №1024 :-)

Всем тем, что ещё не зарегистрировался на сайте, рекомендуется это сделать. Регистрация предоставит Вам полный доступ к возможностям сайта. Перейти к регистрации »

Статистика Delphi.int.ru Expert на 29.10.2007, 12:00 (предыдущий подсчёт - 22.09.2007, 12:00):

Количество экспертов: 37.
Участниками задано вопросов: 1047 (+113).
Экспертами отправлено ответов: 1601 (+122).
Количество сообщений на мини-форумах: 1941 (+174).
Максимальное число разосланных в день писем (за октябрь '07): 1960 (28.10.2007).
Максимальное число разосланных в день писем (за всю историю): 1960 (28.10.2007, +140).

Разделы рассылки:

» Авторское слово
» Обучение Delphi
» Delphi.int.ru Expert
» Статья по Delphi
» Файловый архив
» Юмор

Delphi.int.ru Expert
Сообщество программистов: общение, помощь, обмен опытом.

Количество читателей рассылки (29.10.2007, 12:00):
5577+1470+448= 7495 (+180)

Связь по e-mail:

admin@delphi.int.ru
support@delphi.int.ru


Если Вы хотите где-либо разместить материалы, представленные на www.delphi.int.ru или в данной рассылке, свяжитесь, пожалуйста, с их автором или ведущим рассылки.

Delphi.int.ru Expert
Сообщество программистов: общение, помощь, обмен опытом
(текущая версия системы: 2.213; последнее обновление: 27.10.2007)

Последние новости

23.09.2007

В личную информацию участников добавлены новые поля - Skype имя, Jabber ID, Ник(и) в сети IRC.

27.09.2007

Введена автоматическая подсветка фрагментов кода во всех сообщениях (подробнее).
Добавлена возможность выбора разделов, в которых участник хочет быть экспертом.

29.09.2007

Созданы RSS-ленты для последних вопросов, ответов и новостей сайта (подробнее).

30.09.2007

Создана страница с деревом всех тематических разделов (подробнее).

20.10.2007

Создана страница "Участники и посетители", на которой размещена информация об участниках, находящихся в данный момент на сайте и участниках, посещавших сайт недавно (подробнее).

21.10.2007

Введён общий адрес службы поддержки по любым вопросам, касающимся сайта - support at delphi.int.ru.

27.10.2007

Введена информация о знаках зодиака.

 

Архив: вопросы и ответы

В архив попадают вопросы, срок действия которых истёк. Каждый заданный вопрос действителен в течение одной недели, т.е. ответы на него принимаются именно в этот период. В сегодняшнем выпуске опубликованы вопросы # 296 - 310. Вопросы, на которые не было дано ни одного ответа, не публикуются.

Статистика по выпуску:

Кол-во вопросов: 15
Кол-ответов: 21
Баллы за ответы: 42
 

Вопрос # 296

Раздел: Delphi » Взаимодействие с Windows

Уважаемые эксперты, битый месяц пытаюсь глобально объявить в программе горячие клавиши, но, как только окно программы теряет фокус, клавиши перестают работать...
Я чувствую, что решение где-то близко: подскажите пожалуйста, как это реализовать?

Вопрос задал: Noname (статус: Посетитель)
Вопрос отправлен: 05 февраля 2007, 14:03 (эксперты)
Всего ответов: 1

 

1. Отвечает эксперт: Вадим К

нужно регистрировать глобальные горячие клавиши.
ну например
http://www.cyberguru.ru/delphi-sources/system/delphi-hotkeys-goryatchie-klavishi.html

Ответ отправил: Вадим К (статус: Магистр)
Ответ отправлен: 5 февраля 2007, 20:52


Вопрос # 297

Раздел: Delphi » Прочее

Здраствуйте эксперты. У меня полный проблем. Мне необходим халявный сайт где я смогу скачать дипломную работу выполненную в Delphi. На преддипломной практике оказалось, что по моей теме работают еще несколько студентов. (это нихт гут). Времени у меня вообще не осталось. Помогите плиз...

Вопрос задал: BLOOD_OMEN (статус: Посетитель)
Вопрос отправлен: 05 февраля 2007, 21:10 (эксперты)
Всего ответов: 1; сообщений в мини-форуме вопроса: 1

 

1. Отвечает эксперт: Вадим К

Обычно такие сайты платные, так как такие работы делаются "под ключ", тобыш персонально. И каким образом это касается этого сайта? Работать надо, а то привыкле к халяве

Ответ отправил: Вадим К (статус: Магистр)
Ответ отправлен: 5 февраля 2007, 21:40


Вопрос # 299

Раздел: Delphi » Работа с компонентами и библиотеками

Здравсствуйте, специалисты. Есть 2 MEMO. Нужно, чтобы они вместе прокручивались Scrollbars по горизонтали. И как привязать scrollbar к memo?

Вопрос задала: Тамара (статус: Посетитель)
Вопрос отправлен: 07 февраля 2007, 19:53 (эксперты)
Всего ответов: 2; сообщений в мини-форуме вопроса: 3

 

1. Отвечает эксперт: Geron

Здравствуйте, Тамара! Есть у мемо такое свойства как ScrollBars, если конечно это вам поможет

Ответ отправил: Geron (статус: 1-ый класс)
Ответ отправлен: 8 февраля 2007, 00:03
Оценка за ответ: 4

2. Отвечает эксперт: Роман

Здравствуйте, Тамара!У компонента Memo есть свойство ScrollBars которое может принимать значения ssNone,ssVertical,ssHorizontal,ssBoth:соответственно без полос порокрутки,вертикальная,горизонтальная и обе.По поводу одновременной прокрутки возможно вам поможет функция GetScrollPos:
function GetScrollPos(Wnd: HWnd; Bar:Integer): Integer;
Считывает текущее положение указателя пpокpутки относительно текущего диапазона пpокpутки.
Паpаметpы:
Wnd: Окно, содеpжащее полосу пpокpутки.
Bar: Одна из констант sb_Ctl, sb_Horz, sb_Vert.
Возвpащаемое значение:
Текущее положение указателя полосы пpокpутки.
Также посмотрире приведённый пример который передвигает второй ScrollBar на такое же количество едениц, на которое передвинет пользователь первый. Т.е. синхронизирует их.

Приложение:

Ответ отправил: Роман (статус: 5-ый класс)
Ответ отправлен: 8 февраля 2007, 05:09
Оценка за ответ: 5


Вопрос # 300

Раздел: Delphi » Работа с устройствами и "железом"

Уважаемые!
Подскажите, как средствами Delphi определить что на сетевом компьютере установлен ПИШУЩИЙ CD/DVD

Вопрос задал: ASHA (статус: Посетитель)
Вопрос отправлен: 08 февраля 2007, 11:12 (эксперты)
Всего ответов: 1; сообщений в мини-форуме вопроса: 1

 

1. Отвечает эксперт: Вадим К

Если у вас есть админ права не него, то тогда надо удалённо подключить реестр и считать с него список устройст. А там уже будет видно.
А если нет, то законными средставми никак. Можно конечно трояна забросить, который доложит.
Может скажете, для чего вас Это?

Ответ отправил: Вадим К (статус: Магистр)
Ответ отправлен: 9 февраля 2007, 00:55


Вопрос # 301

Раздел: Delphi » COM, ActiveX и взаимодействие с другими приложениями

работа с Office в Delphi

Вопрос задала: Титова Нина Владимировна (статус: Посетитель)
Вопрос отправлен: 08 февраля 2007, 16:26 (эксперты)
Всего ответов: 3

 

1. Отвечает эксперт: Сергей Устинов

Здравствуйте, Титова Нина Владимировна!

Приложение:

Ответ отправил: Сергей Устинов (статус: 2-ой класс)
Ответ отправлен: 8 февраля 2007, 19:15

2. Отвечает эксперт: Роман

Здравствуйте, Титова Нина Владимировна!Попробуйте http://www.delphikingdom.com/ там есть статьи по работе с Excel'ем,Word'ом в Delphi.

Ответ отправил: Роман (статус: 5-ый класс)
Ответ отправлен: 8 февраля 2007, 20:29

3. Отвечает эксперт: Knjazev

Здравствуйте, Титова Нина Владимировна!
В добавление к предыдущим ответам. Избегайте использовать Office в своих программах:
1. Он платный и вполне возможно на конечной машине его может не оказаться.
2. Фирма Microsoft не заботится о совместимости версий. Например, мне известен случай, когда программа работала только при наличии Word 2000 (налмчие ХР не помогало).

Ответ отправил: Knjazev (статус: 3-ий класс)
Ответ отправлен: 9 февраля 2007, 00:19


Вопрос # 302

Раздел: Delphi » Программирование баз данных (БД)

Здравствуйте, во первых спасибо тем кто мне ответил: Я прочитал в аксесе справку, многое что понял, я использую таблицу парадокс7(это хорошо?), как лучше связать таблицы между собой с пом. Утил. ДатабейзДекстоп или в Дельфи и как это сделать…? Мне один посоветовал использовать АДО чем БДЕ. Когда задаешь драйвер для источника данных, какой выбрать: Driver do Microsoft Paradox или Microsoft Paradox Driver? Но вот про БДЕ много документаций, а вот про АДО мало… И как потом распространять свои проги…? Еще один вопрос: у меня будет прога с БД одна и та же, но в разных компах и разными данными, и как слить данные с других на один, там же индексы будут одинаковыми хотя данные разные??? Пожалуйста ответьте мне, для повышения моего уровня знаний. P.S. как можно поменять здесь(Delphi.int.ru) свой логин? Вопрос профессионалам: За какое время Вы стали профессионалами?

Вопрос задал: Сагынов Байсак Найсабекович (статус: Посетитель)
Вопрос отправлен: 08 февраля 2007, 18:07 (
эксперты)
Всего ответов: 2

 

1. Отвечает эксперт: Knjazev

Здравствуйте, Сагынов Байсак Найсабекович!
Читайте учебники и побольше и через 4 года сможете решать широкий круг задач.

Ответ отправил: Knjazev (статус: 3-ий класс)
Ответ отправлен: 9 февраля 2007, 00:22

2. Отвечает эксперт: Вадим К

Итак, начнём по порядку. Лучше использовать ADO. Причин тому очень много
- Вам не нужно тянуть за собой BDE, а это иногда до 10метров.
- Очень часто у пользователя возникает конфликт с настойками BDE. Некоторые программеры умудряются продавать софт, который работает с BDE, причём на вопросы где его скачать молчат и даже не знают что ответить. Гдето год назад попала мне такая прога - каталогизатор CD. Знакомый пожаловался, что тут класная прога (на сайте розхвалили), 35 стоит, а запустить не может. Как потом выявилось, она требовала старой версии BDE + спецефические настройки. Я два дня потратил, пока сконфигурировал. Я за эту прогу ещё дотаций попросил. Автор меня на критику матом ругал.
Постоеная на ADO прога будет работать на голой винде, тобыш, сразу после установки Windows можем запускать прогу и всё работает. Правда есть маленькое но. С XP поставляется немного старая версия Jet драйвера (о нём позже) и поэтому отсутствую некоторые "вкусности". Но дистрибутив можно всегда слить с сайта либо поставить Officce XP или выше.
-Следующее преимущиство ADO - это то, что можно базы разрабатывать в Accese. И юзать их в своей проге. Вся база храниться в одном файле - тоже огромный плюс.
- При настойке подключения вы составляете "строку подключения" (мастер её помогает сгенерить автоматом). Единственное, что я всегда поправляю за мастером - это полный путь переправляю в относительный - таким образом мы никак не привязаны к каталогу.
- Реально подтормаживать начинает при размере файла базы порядка полгига. Скорость - около 5000 выборок (Select) на средней машине (проц более 1.5)
Вывод ADO+Access+Delphi это быстрая разработка, достаточная устойчивость, непривередливость к установке лишнего софта.
Недостатки. Однопользовательская. Неспособность оперировать огромными объёмами данных.
Рекомендации. Начните изучать SQL. В делфи есть компонент ADOConnection (для установки связи с базой) и ADOCommand (Он умеет выполнять запросы) Вместе (+SQL) они сила.

По поводу слить. Тут так просто нельзя дать ответ. Надо знать структуру таблицы и физическую сущность данных.

По поводу логина. Это к администрации. Хотя на многих форумах принято, что логин не меняется.

По поводу профессионализма. Это очень философский вопрос. Нужно просто каждый день ( и ночь) работать над собой. Не пить пиво с друзями, а открыть томик Кнута, к примеру, и почитать. Писать софт. И прежде чем задавать глупые вопросы, порыться в нете, погуглить. Вы ж не первый и не последний. И главное, эксперементы. Вот вы спрашиваете, какой драйвер лучше. А применить, попробывать поработать? Вы думаете, у меня всё с первой попытки получается? Профессионал, это человек, который научился не задавать вопросов, а сам находить на них ответы. Только не принимайте это как упрёки или оскорбления.
А стать профессионалом? Если человек вам говорит, что он профессионал - бросте в него камень, ибо он врёт вам. Как говорил мой препод в вузе "Человеческое знание бесконечно, узнать всё нельзя, но мы знаем 4 процента." Подумайте над этой фразой. Скоко составляет 4% от бесконечности

Ответ отправил: Вадим К (статус: Магистр)
Ответ отправлен: 9 февраля 2007, 00:51


Вопрос # 303

Раздел: Delphi » Программирование баз данных (БД)

Здравствуйте уважаемые эксперты!
У меня два вопроса. Подскажите как из Delphi подключится и работать с таким чудом СУБД как Stay(какие компоненты лучше использовать и есть ли они)?
И второй вопрос: Как мне в моей программе сделать синхронизацию базы Stay с базой Firebird?
И если можно дайте ссылки на документацию по Stay.

Вопрос задал: Кисель Вадим (статус: Посетитель)
Вопрос отправлен: 09 февраля 2007, 19:02 (эксперты)
Всего ответов: 1

 

1. Отвечает эксперт: Alex Van Glukhman

Здравствуйте, Кисель Вадим!
Если не ошибаюсь данное чудо принадлежит украинским программерам и не дельфятникам, а исходя из этого сомневаюсь что каким то образом можно в Delphi можно сделать подключение через стандартные компоненты связи с БД. Наверное проще средствами Stay сделать конвертацию БД в какой либо другой формат - хоть текстовой и залить уже это содержимое в Delphi. Соответственно тоже относится и к синхронизации.
Что касается ссылок - это ближе к 1С, Акцент и БЭСТ

Ответ отправил: Alex Van Glukhman (статус: 7-ой класс)
Ответ отправлен: 13 февраля 2007, 21:43
Оценка за ответ: 4
Комментарий: Ответ конечно не супер. На сайте разработчиков Stay написано что эта СУДБ ориентирована на язык С но всеравно спасибо за то что ответили.


Вопрос # 304

Раздел: Delphi » Работа с компонентами и библиотеками

Я хочу задать такой вопрос?
AlphaBlend:=tpue
AlphaBlendValue:=100
Form1 делаеться полупрозрачной, и
компоненты на ней тоже. Вопрос?
Можно сделать так что бы форма была полупрозрачной,
а компаненты на форме отображались в полном цвете.
И ещё, я сделал не стандартную кнопку(например круглую),
как мне поместить её на форму,ну и естественно дать ей
команду. Заранее благодарен.

Вопрос задал: Толков Геннадий Викторович (статус: Посетитель)
Вопрос отправлен: 10 февраля 2007, 00:51 (эксперты)
Всего ответов: 1; сообщений в мини-форуме вопроса: 1

 

1. Отвечает эксперт: Роман

Здравствуйте, Толков Геннадий Викторович!По поводу прозрачности:как вариант можно сделать так-помастить на форму компонент Shape,установить Align:=alClient,Color-любой неиспользуеиый в программе,например clMaroon.У формы установить TransparentColor:=true,TransparentColorValue такой-же как и у Shape,BorderStyle:=bsNone.Компилируем - все компоненты на форме будут непрозрачными,а форма будет невидна.Также привожу код (автор Григорьев Антон)адресс сайта не помню:( ,там все откоментировано,форма будет полупрозрачной с заданым Alpha и цветом.
По поводу кнопок: если яправильно понимаю, то имеем что-то типа:
type
TMyButton=class(TCustomControl)
.....
end;
В таком случае:
var
butt:TMyButton;
...,а в createform пишем butt:=TMyButton.Create(self); и так далее, а все вещи вроде buttonclick должны быть описаны в TMyButton...
Или можно посмотреть на http://www.gigabyte.iatp.org.ua/index.html, в разделе компоненты есть EllipseButton.

Приложение:

Ответ отправил: Роман (статус: 5-ый класс)
Ответ отправлен: 10 февраля 2007, 01:51
Оценка за ответ: 5


Вопрос # 305

Раздел: Delphi » Программирование баз данных (БД)

Всем доброго времени суток.
Ситуация такая:
В таблице имеются данные по продажам,
необходимо их визуально проанализироавть, т.е количество проданного товара представить в виде гравика, желательно с возможностью задавать параметор времени.
Вот такая канитель.
Заранее спасибо!!!!

Вопрос задал: Илья Бабаков (статус: Посетитель)
Вопрос отправлен: 10 февраля 2007, 11:52 (эксперты)
Всего ответов: 1; сообщений в мини-форуме вопроса: 3

 

1. Отвечает эксперт: Вадим К

А как таблица представлена у вас? если это с базы данных(или Excel) - тогда нет проблем. А вот если это в виде текста, тогда надо писать парсер текста и вытягивать данные. Так как у вас даже нет намёка на формат данных, я не могу вам набросать код.

Ответ отправил: Вадим К (статус: Магистр)
Ответ отправлен: 12 февраля 2007, 11:41
Оценка за ответ: 1


Вопрос # 306

Раздел: Delphi » Взаимодействие с Windows

Доброго времени суток.
Как сделать так, чтобы при клике на кнопку запускался компилированный HTML-файл справки.

Вопрос задал: Илья Бабаков (статус: Посетитель)
Вопрос отправлен: 10 февраля 2007, 17:05 (эксперты)
Всего ответов: 2; сообщений в мини-форуме вопроса: 5

 

1. Отвечает эксперт: Роман

Здравствуйте, Илья Бабаков!Чтобы справка была доступна в программе, нужно указать программе на файл .hlp. Самый простой способ размещения файла справки - в той же папке, где находится исполняемый файл. Определить для приложения файл справки можно так: открыв проект (приложения) в Delphi и выбрав меню "Project" -> "Options" -> "Application", вписать название файла справки в поле ввода "Help file". При этом нужно указать название файла без пути. Когда WinHelp пытается найти справочный файл, одна из просматриваемых директорий - та, где расположен исполняемый файл программы. Другой способ - в обработчик события OnCreate главной формы программы вставить строку:

Application.HelpFile:=ExtractFilePath(Application.ExeName) + "MyHelp.hlp";
где MyHelp.hlp - название файла справки.
Чтобы из меню в программе вызвать оглавление справки, нужно воспользоваться функцией

Application.HelpCommand(HELP_FINDER, 0);
Чтобы перейти к одной из определенных нами тем справки, нужно вызвать функцию
Application.HelpJump('MyTopic'),
где MyTopic - идентификатор темы.
Один из способов вызова справки - нажатие клавиши F1. Можно организовать вызов контекстной справки при нажатии на F1, когда активным является тот или иной элемент управления. Для этого соответствующей теме справки нужно присвоить номер, а затем этот номер присвоить свойству HelpContext элемента управления. Чтобы задать номера для тем справки, нужно открыть проект справки в HelpWorkshop и нажать кнопку "Map" в правой части окна. Нажимаем в диалоговом окне "Add", вводим идентификатор темы и произвольный номер (например, 1 :) ), повторяем это для всех нужных тем (каждой - свой номер), закрываем окно и нажимаем в очередной раз "Save and Compile". Затем в Delphi, в окне инспектора объектов, присваиваем нужные номера нужным элементам управления (напоминаю, свойство HelpContext).

Ответ отправил: Роман (статус: 5-ый класс)
Ответ отправлен: 10 февраля 2007, 23:07
Оценка за ответ: 3

2. Отвечает эксперт: min@y™

В приложении - компонент для работы с СНМ-файлами. Нарыл где-то в интернете, давно.

Приложение:

Ответ отправил: min@y™ (статус: Студент)
Ответ отправлен: 12 февраля 2007, 08:39
Оценка за ответ: 2


Вопрос # 307

Раздел: Delphi » Работа с файловой системой

Как загрузить в приложение часть HTML документа, ограниченную определёнными тегами?

Вопрос задал: Иван (статус: Посетитель)
Вопрос отправлен: 10 февраля 2007, 21:19 (эксперты)
Всего ответов: 1; сообщений в мини-форуме вопроса: 2

 

1. Отвечает эксперт: min@y™

А что тут такого? Надо пропарсить HTML-код, скопировать нужный кусок и отобразить. Могу написать пример под конкретные условия задачи.

Ответ отправил: min@y™ (статус: Студент)
Ответ отправлен: 12 февраля 2007, 08:45


Вопрос # 308

Раздел: Delphi » Работа с компонентами и библиотеками

Здравствуйте.Мой вопрос под номером 304.Мне не сильно понятно как мне на форму положить свою(допустим круглую)кнопку.Я нарисовал её в PhotoShop с расширением *.png.Как мне кинуть её на форму.Если можно поподробнее.Заранее благодарен.

Вопрос задал: Толков Геннадий Викторович (статус: Посетитель)
Вопрос отправлен: 12 февраля 2007, 00:53 (эксперты)
Всего ответов: 2; сообщений в мини-форуме вопроса: 1

 

1. Отвечает эксперт: min@y™

Сохрани свой рисунок в формате bmp или jpeg.
Кинь на форму TImage, в него подгрузи файл рисунка.
Событие TImage.OnClick() будет обработчиком нажатия.
Фокус кнопка не получит никогда.

Ответ отправил: min@y™ (статус: Студент)
Ответ отправлен: 12 февраля 2007, 08:47
Оценка за ответ: 4

2. Отвечает эксперт: Роман

Здравствуйте, Толков Геннадий Викторович!Если вы используете такой подход то по этому адрессу http://www.delphi.int.ru/?name=components&grp=buttons есть кмпонент ButtonComps - 5 симпатичных кнопочек с возможностью полного изменения внешнего вида.Одна из них - ImageButton - какраз и позволяет использовать использовать свои изображения,но в формате bmp.Правда передать на неё фокус нельзя...Или как педлогает min@y™.

Ответ отправил: Роман (статус: 5-ый класс)
Ответ отправлен: 12 февраля 2007, 14:51
Оценка за ответ: 4


Вопрос # 309

Раздел: Delphi » Прочее

Добрый день,уважаемые экперты! Если не затруднит,не могли бы вы мне подсказать где можно откопать исходник программы (соответственно на Delphi) типа CLCL или Memorizer - менеджера буфера обмена. Хочу разобраться как это делается и своять свою. Заранее спасибо и извините, что занимаю ваше драгоценное время такой ерундой.

Вопрос задал: Нахушев Азамат Владимирович (статус: 1-ый класс)
Вопрос отправлен: 12 февраля 2007, 10:51 (эксперты)
Всего ответов: 2; сообщений в мини-форуме вопроса: 2

 

1. Отвечает эксперт: Вадим К

А что же здесь искать? для начала стоит усвоить следующее - подключаем модуль ClpBrd (кажеться так) и у нас появляется переменная Clipboard(обявлять её не надо). Так как у буфере может храниться и текст и изображение и что угодно, то буфер ещё хранит указание на формат. Они (форматы) обявлены с префиксом CF_. Например CF_TEXT - обычный текст. Буфер умеет преобразовывать некоторые форматы (например HTML в RTF). Запросить/установить текст можно с помощью свойства AsText. Для других типов есть свои методы.
Теперь осталось найти jvcl компонент, который следит за буфером и научиться отлвливать момент изменения оного. (Это банальная посылка сообщения)

Ответ отправил: Вадим К (статус: Магистр)
Ответ отправлен: 12 февраля 2007, 11:39

2. Отвечает эксперт: Роман

Здравствуйте, Нахушев Азамат Владимирович!Есть книжка М.Фленова "Программирование в Delphi глазама хакера",там всё хорошо описано.Точно есть по этой ссылке-проверял(!) http://www.programmersclub.ru/files/book_delphi_haker.rar

Ответ отправил: Роман (статус: 5-ый класс)
Ответ отправлен: 12 февраля 2007, 15:37
Оценка за ответ: 5
Комментарий: Спасибо! буду должен


Вопрос # 310

Раздел: Delphi » Работа с компонентами и библиотеками

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

Вопрос задал: Шуваев Алексей Сергеевич (статус: Посетитель)
Вопрос отправлен: 13 февраля 2007, 03:37 (эксперты)
Всего ответов: 1

 

1. Отвечает эксперт: Вадим К

А как по кнопке добавлятьзнаем?
Если да, тогда ставим компонент TTimer, у него всего одно событие, оно нам и надо. Туда вписываем код добавления. Также у таймера выставим Enabled:=true; - запустить таймер
Interval - время в мс (1/1000 секунды) для срабатываний. Не рекомендую ставить меньше 50 - таймер просто не успеет оттикать.
Если вы не знаете, как добавить, тогда напишу и это. Для начала возмём обычный Edit, так как вы хотите в произвольную таблицу и столбец, а TDBEdit только создаст проблемы.
Итак, код (набросок)
Table1.Append;
Table1.FieldbyName('MyField').Asstring:=Edit1.text;
Table1.post;

Ответ отправил: Вадим К (статус: Магистр)
Ответ отправлен: 13 февраля 2007, 10:57
Оценка за ответ: 5
Комментарий: Спасибо огромное мне это помогло...


Обучение Delphi

» Найти все предыдущие уроки можно на www.delphi.int.ru в разделе "Статьи". Последние 3 урока:

12. Функции и процедуры. Математические вычисления. Случайные числа
13. Ввод и вывод
14. Выбор (ветвления)

Подводим промежуточный итог

Автор:
© Ерёмин А.А., 2007
Ничто так не способствует успешному внедрению новшеств, как отсутствие проверок.
Номер урока:
15
 

Прежде чем продолжить изучение языка Pascal, следует подвести итог и вспомнить всё, что было сказано ранее. Всё, что сказано ниже, является кратким сборником всех предыдущих уроков.

Переменные

Переменная - это ячейка памяти, которой присвоено некоторое имя и это имя используется для доступа к данным, расположенным в данной ячейке. Для каждой переменной задаётся тип данных - диапазон всех возможных значений для данной переменной. Примеры типов данных - Integer (целое число), Real (вещественное число), Boolean (логическое значение), String (строка, последовательность символов), Char (один символ) и др. Значения переменным присваиваются непосредственно в процессе выполнения программы. Делается это с помощью знака присвоения - ":=" ("переменная := значение"). Каждая переменная перед использованием должна быть описана в разделе описания с помощью ключевого слова VAR ("VAR переменная : тип данных"). Частным случаем переменных являются константы. К онстанты - это переменные, значения которых не меняются в процессе выполнения программы. Константы описываются словом CONST ("CONST имя константы = значение"). Тип данных при описании констант простых типов данных можно опускать (например, запись "CONST g: Real = 9.8" эквивалентна записи "CONST g = 9.8"). Одной из встроенных констант является число "пи" - PI.

Базовые конструкции

Раздел описаний - это то место в программе, где описываются все используемые переменные, константы (а также метки, подпрограммы, типы данных и пр.).
Раздел реализации - место, где записываются все инструкции, которые будут выполнены при работе программы.
Раздел реализации заключается в блок BEGIN .. END:

    {раздел описаний}

begin

  {раздел реализации}

end.

Блок BEGIN .. END служит для группировки нескольких команд. Особенно хорошо это будет проиллюстрировано при записи условного оператора (см. далее).

Условный оператор

Условный оператор служит для создания ветвлений в программе, т.е. когда в зависимости от какого-либо условия выполняется та или иная последовательность команд. Условный оператор записывается с помощью ключевых слов IF .. THEN, между которыми указывается некоторое условие, логическое выражение, которое может быть либо истиной (True), либо ложью (False). Команды, следующие за условным оператором, выполняются только в том случае, когда логическое выражение является истиной.

if {условие} then
  {последовательность команд}

В случае, если требуется выполнить несколько команд в зависимости от выполнения условия, следует заключить эти команды в BEGIN .. END:

if {условие} then
begin
  Команда 1;
  Команда 2;
  Команда 3
end;

В приведённом примере команды будут выполнены только в том случае, если условие истинно. Условный оператор позволяет указать команды и для того случая, когда условие не выполнилось:

if {условие} then
  {команды, если условие выполняется}
else
  {команды, если условие не выполняется}

Обратите внимание, что перед ключевым словом ELSE разделитель команд ";" не ставится.

Не всегда использование конструкции IF .. THEN .. ELSE удобно. Иногда требуется выполнить различные команды в зависимости от значения переменной, причём значений может быть много. В этом случае можно применить оператор выбора, именуемый CASE. Оператору выбора сообщается переменная-селектор (тип данных должен быть обязательно перечислимый - число, символ и т.п.), а затем перечисляются значения, которые может принимать переменная и для каждого из них указывается соответствующий набор команд. В случае, если значение переменной не совпало ни с одной из указанных, выполняется набор команд, указанных после слова ELSE (хотя этот блок не является обязательным).

case {переменная-селектор} of
  {константа_1}: {инструкции 1}
  {константа_2}: {инструкции 2}
  {...}
  else {инструкции, если ни одна константа не подошла}
end;

Логические выражения

Логические выражения - выражения, которые могут быть либо истинными, либо ложными. Соответствующий тип данных (логический) - Boolean (значения True и False). Логические выражения, к примеру, указываются при записи условного оператора IF. Над логическими выражения можно проводить некоторые операции:
NOT ("не", отрицание) - изменяет значение выражения на противоположное;
AND ("и", умножение) - результирующее выражение истинно только тогда, когда истинны все составляющие его выражения;
OR ("или", сложение) - общее выражение будет истинным когда хотя бы одно из выражений, соединённых с помощью OR, истинно.

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

Функции

Функции - заранее определённые наборы команд, направленные на получение какого-либо значения. Функция может иметь входные параметры - аргументы, которые используются при вычислении результирующего выражения. Входных параметров у функции может и не быть. Функцию можно вызывать по её имени. Значение, возвращённое функцией, можно присвоить какой-либо переменной, тип данных которой совпадает с типом данных результата функции, либо использовать в каком-либо выражении или даже в качестве входного параметра другой функции. В Delphi встроено огромное количество функций. Дополнительные функции для математических расчётов содержатся в модуле Math. Чтобы подключить этот модуль, нужно добавить в раздел uses его имя.

Случайные числа

Случайные числа полезно применять при моделировании каких-либо процессов, которые могут протекать при различных условиях. Также случайные числа часто применяются в играх для создания случайного варианта игры (например, расклад карточного пасьянса).
Случайные числа генерируются функцией Random. Если функция вызвана без параметров, случайное число будет взято из диапазона от 0 до 1, а если передать функции какое-либо число, то число будут выбрано из интервала от 0 до N (N - переданный параметр). Само число N при этом в "розыгрыше" не участвует. Для того, чтобы получить случайное из число из какого-нибудь другого интервала (например, от -5 до 5), следует просто из результата вычесть смещение относительно нуля. Например, Random(10)-5 будет генерировать числа от -5 до 5.
Чтобы числа были действительно случайными (а не псевдослучайными - при каждом запуске программы числа будут одинаковые), следует перед первым вызовом функции Random() вызывать процедуру Randomize. Она не имеет никаких параметров, её назначение - инициализация генератора действительно случайных чисел.

Ввод и вывод

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

Для конвертирования чисел в текстовые строки и обратно используются следующие функции:
StrToInt() - преобразует указанную строку в целое число;
StrToFloat() - преобразует указанную строку в вещественное число;
IntToStr() - преобразует целое число в строку;
FloatToStr() - преобразует вещественное число в строку.

Например, если требуется получить значение, введённое в текстовое поле Edit1 и записать его в переменную A типа Integer, следует написать так:

A:=StrToInt(Edit1.Text);

Для ввода чисел можно использовать текстовое поле TEdit (страница Standard), бегунок TTrackBar (страница Win32), поле с кнопками-стрелками TSpinEdit (Samples) и др. Для ввода текстовых строк небольшой длины обычно используется TEdit, для ввода больших текстов - TMemo (Standard) или TRichEdit (Win32). Также удобен ввод с помощью диалогового окна, создаваемого функцией InputBox().

Для вывода данных можно использовать любые из компонент - например текстовую метку TLabel или то же текстовое поле TEdit. Очень часто удобно выводить данные в виде диалоговых окон - с помощью функций ShowMessage() и MessageDlg().

Заключение

В данном уроке были кратко изложены темы, затронутые в предыдущих уроках - объявление переменных и присвоение им значений, использование констант, базовые конструкции языка Pascal, условный оператор и оператор выбора, формирование логических выражений, использование готовых функций, применение генератора случайных чисел и способы ввода и вывода данных. Всё это является базой для дальнейшего изучения языка Pascal и объектно-ориентированной среды Delphi.


Оцените данный урок (1 - плохо, ..., 5 - отлично): -1- -2- -3- -4- -5-. Комментарии в тексте письма приветствуются.
 

Статьи

Самые популярные статьи на сайте:

Создание непрямоугольных форм в Delphi
Как можно из Delphi отслеживать все события Windows?
Конвертирование графических форматов
Работа с приложениями Microsoft Office. Excel
Как прочитать ID3-Tag'и из MP3-файла?
Работа с реестром и INI-файлами в Delphi
Работа с приложениями Microsoft Office. Word
Написание инсталлятора на Delphi
Работа со строковыми типами данных
Работа с HTML-справкой в программах

Сохранение данных приложения и пользователя

Статья-оригинал: delphi.about.com
Перевод статьи: Вадим К

Получение специальных каталогов, используя Delphi

Когда ваше Delphi-приложение нуждается в том, чтобы сохранить некоторую информацию на жёсткий диск пользователя, Вы должны быть осторожны, и должны разделять сохранение пользовательских данных, настроек для пользователя и настроек для компьютера.

Например, в Windows для сохранения специфических для приложения файлов, таких как INI-файлы, файлы состояния программы, временные файлы и т.п., должен быть использован каталог "Application Data".

Крайне нежелательно использовать жёстко прописанные пути вроде "C:\Program Files". При сохранении файлов в этом каталоге, приложение вряд ли будет корректно работать в других версиях Windows, потому что этот путь может быть изменён в следующих версиях Windows, либо пользователь может установить ОС на другой диск. К тому же, Windows Vista может не дать доступ ко многим каталогам. Даже пользователю с правами администратора.

WinAPI-функция SHGetFolderPath

Функция SHGetFolderPath определенна в модуле SHFolder. SHGetFolderPath возвращает полный путь к указанному специальному каталогу по его идентификатору.

Ниже приведена функция-обёртка для SHGetFolderPath, чтобы было проще получить стандартные каталоги (для всех пользователей или только для текущего пользователя).

uses SHFolder;
 ...
function GetSpecialFolderPath(folder : integer) : string;
const
  SHGFP_TYPE_CURRENT = 0;
var
  path: array [0..MAX_PATH] of char;
begin
  if SUCCEEDED(SHGetFolderPath(0,folder,0,SHGFP_TYPE_CURRENT,@path[0])) then
    Result := path
  else
    Result := '';
end;

Теперь создадим приложение для использования функции SHGetFolderPath:

Пользовательские / Системные каталоги
  • Положим на форму TRadioGroup ("RadioGroup1");
  • Положим на форму TLabel ("Label1")
  • Добавим пять элементов в RadioGroup (свойство Items):
    1. "[Текущий пользователь]\My Documents"
    2. "All Users\Application Data"
    3. "[User Specific]\Application Data"
    4. "Program Files"
    5. "All Users\Documents"
  • Добавим обработчик события OnClick для RadioGroup.
//RadioGroup1 OnClick
procedure TForm1.RadioGroup1Click(Sender: TObject);
var
  index : integer;
  specialFolder : integer;
begin
  if RadioGroup1.ItemIndex = -1 then Exit;
  index := RadioGroup1.ItemIndex;
  case index of
    //[Current User]My Documents
    0: specialFolder := CSIDL_PERSONAL;
    //All UsersApplication Data
    1: specialFolder := CSIDL_COMMON_APPDATA;
    //[User Specific]Application Data
    2: specialFolder := CSIDL_LOCAL_APPDATA;
    //Program Files
    3: specialFolder := CSIDL_PROGRAM_FILES;
    //All UsersDocuments
    4: specialFolder := CSIDL_COMMON_DOCUMENTS;
  end;
  Label1.Caption := GetSpecialFolderPath(specialFolder) ;
end;

Примечание: "[Текущий пользователь]" - это имя пользователя, сеанс которого в данный момент активен в Windows.

Функция SHGetFolderPath является более расширенным вариантом функции SHGetSpecialFolderPath.

Программа не должна сохранять свою информацию (временные файлы, пользовательские настройки, файлы конфигурации приложения, и т.д.) в каталоге My Documents (Мои документы), либо в каталоге самого приложения (т.е. в одном из подкаталогов Program Files). Следует использовать специальный каталог в Application Data, отведённый именно для Вашего приложения. Как правило, его имя совпадает с именем каталога программы в Program Files).

Всегда создавайте подкаталог только в тех путях, которые возвращает функция SHGetFolderPath! Как правило, каталог создаётся такой: "\Application Data\Название компании\Название продукта\Версия продукта".

Пример программы с использованием функции, описанной в статье, можно загрузить здесь.

Файловый архив

Разделы: Статьи | Компоненты | Plug-in's | Документация | Исходники | Программы | Игры | Изображения

Уважаемые читатели! Отправляйте полезные компоненты/модули, исходники, собственные программы/игры, документацию - книги, учебники и они будут размещены на сайте.

Название
Описание
Раздел
Объём
Ссылки
JVShape
JVShape - графический элемент с поддержкой 69 различных фигур и 26 типов градиентной заливки. Поверх фигуры может быть расположен текст в любом месте и под любым углом. Событие OnUserDraw позволит отрисовывать дополнительные элементы на канве компонента.
10 Кб
Delphi Visual Shapes
Набор компонент, представляющих из себя различные формы (например, параллелограмм, трапеция, пентагон, звезда и др.). Всего 14 форм. Компоненты работают точно также, как стандартный компонент TShape. Новые формы легко создать, скомбинировав имеющиеся.
6 Кб
Bllepint
Компонент, предоставляющий доступ к системному динамику (PC Speaker) из Windows.
35 Кб
BTBeeper
BTBeeper использует системный динамик для воспроизведения звуков. Фактически, можно играть целые песни. Компонент практически бесполезный, создан просто для забавы.
Звук через динамик может быть полезен, например, при отсутствии звуковой карты.
10 Кб
ACM
Данные компоненты предназначены для сжатия/декомпрессии звука в реальном времени с помощью кодеков, установленных в Windows.
216 Кб
ACS Audio Component Suite
ACS - кроссплатформенный набор компонент для выполнения различных операций над звуковыми данными. Компоненты позволят вопроизводить, записывать и конвертировать аудио-данные. Функционал огромный.
674 Кб
Delphi WaveMix
Позволяет одновременно проигрывать до 8 wave-файлов. Никаких сторонних DLL-библиотек не требуется.
193 Кб
SysMenu
Позволяет добавить в системное меню окна дополнительный пункт. Для пункта указывается текст, а в событии Click указываются действия, которые произойдут при щелчке по этому пункту меню.
4 Кб
TfisSysMenu
Лёгкий путь добавить новые пункты в системное меню окна. Сначала следует создать обычное меню средствами Delphi, а затем связать его с компонентом TfisSysMenu. Меню появится не только в run-time, но и в design-time.
Имеется поддержка следующих свойств стандартного объекта TMenuItem: Break, Checked, Caption, Default, Enabled, GroupIndex, RadioItem, ShortCut и Visible.
7 Кб
SHGetFolderPath exmaple
Программа-пример к статье "Сохранение данных приложения и пользователя".
6 Кб
 
Всего новых файлов: 10  
1.13 Мб
 
 

Юмор

Ведущий раздела: Bruder

Не будите в программисте зверя

- Давай, Васек, стремянку, щас здесь долбить будем.
- Угу. Вот. Держи перфоратор. Тут долбим?
- Да.
- А если кабель перебьем?
- Да где перебьем-то? Вооон где все кабели-то идут!
- В этой конторе компьютерной провода где угодно быть могут!
- Вась! Не парь мне мой больной мозг! Лучше дай мне бур. Нет, не тот, на 18 дай, нам здоровая дырка нужна. Ну? Поехали...

(Долбят стену, создавая ужасный грохот. Кажется, что все здание вот-вот развалится. В дыре неожиданно раздается взрыв, вспышка, гаснет свет)

В темноте:

- Даааа, Вася, накаркал ты!
- Сам ты накаркал! Говорил ведь!
- Ну кто ж знал, что эти придурки тут силовой кабель проложат? Перфоратор жалко...

В темноте коридора раздаются неуверенные шаги и уверенный, многоэтажный мат тонким голоском. Строители настораживаются. Дверь вылетает от удара ноги, на пороге стоит что-то такое очкастое, волосатое и щуплое, вооруженное фанариком. От злости свет все время дергается.

- Уроды! - ругается очкарик.
- Ты кто? - хором спрашивают строители.
- Программист я!
- Гыыыы, слышь Вась! Он программист, как мы сразу не догадались. Дохлый такой, соплей перешибить можно. Чего тебе, программист?
- Сволочи! Два часа работы коту под хвост из-за вас! – программиста трясет, очки угрожающе посверкивают.
- Производственная накладка, что поделаешь? - издевательски.
- Накладка? - программист неожиданно высоко подпрыгивает и сильно бьет Васю в ухо. Непонятно за что, ведь говорил второй строитель. Вася падает, программист гневно сопит потом уходит. Строители в шоке.

Вася, держась за ухо:

- Ни за что! Ни за какие коврижки!
- Ты чего, Вась? Кто ни за что? За какие коврижки? Умом тронулся?
- Ни за что! У меня сын программистом хочет стать! Ни за какие коврижки!

:))

Присылайте компьютерные анекдоты, рассказы и истории по этой ссылке и они будут опубликованы в ближайших выпусках рассылки.




Ведущий рассылки: Ерёмин Андрей


В избранное