Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Интернет: Образование, Работа и Бизнес" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Программирование на Delphi #19
Информационный Канал Subscribe.Ru |
Программирование на Delphi. Выпуск №19: 06.02.05. |
||||||||||||||||||||||||||||||||||||||||||||
Письмо... Вот я раз ответил на чей-то вопрос, и мне в ответ пришло письмо с Subject: Re: Answer_41 Ведущий: Вы невнимательно читаете нашу рассылку. Уже неоднократно говорилось, что подобные письма - уведомления о начисленных баллах. Каждый читатель имеет свой собственный "счёт". За каждый ответ начисляются баллы (от 1 до 5). Данное письмо означает, что за ваш ответ на 41-ый вопрос вам начислено 5 баллов и на вашем счету всего 5 баллов. Добавлено на http://www.delphi-faq.fatal.ru/faq.htm. А теперь повторю правила подачи вопросов: вопросы нужно присылать на НАШ ящик с темой 'Question'. Присылать свои вопросы читателям НЕ НУЖНО! Господин 'it', надеюсь, понял, что о нём речь. Количество подписчиков: 1812. Через несколько дней будет открыт новый конкурс. Пожалуйста, не забывайте дублировать свои вопросы на нашем форуме. Top-10 Readers:
Правила нашей рассылки: |
||||||||||||||||||||||||||||||||||||||||||||
63. День добрый ! Прошу помощи, кто знает как к Делфе (7) пристроить самописный плагин, или кто знает где взять плагин к D-7, чтоб как в D-8 в редакторе кода можно было сворачивать текст процедур и отдельных блоков кода ?. Первый вариант желательнее ... [Ответить]. 64. Прошу ответить на вопрос. Можно ли в Delphi в исходнике использовать верхние и нижние индексы? Если можно, как? [Ответить]. 65. Уважаемые коллеги, подскажите, как к обьекту можно прицепить обработчики cm_MouseWheelUp, cm_mouseWheelDown? cm_mouseWheel я приклеил без проблем, но отследить, куда вхилилось не получилось. [Ответить]. 66. Подскажите пожалуйста, как мне преобразовать 24-ную картинку в 16-ти битную? [Ответить]. 67. Хотелось бы научиться работать с системным реестром. Где можно найти подробный учебник (кроме встроенного HELPа)? [Ответить]. 68. Как считать плотность расположения секторов на сидюке, используя Delphi, для формирования уникального номера CD? Стоят стандартные драйвера из набора Windows XP. [Ответить]. |
||||||||||||||||||||||||||||||||||||||||||||
62. (Курсор-карандаш для рисования). [Отвечает: Клевин Антон]: Пишем функцию реакции на нажатие лев. клавиши (можно другой). для опредлеления типа курсора создаем переменную типа истина-ложь. и в зависимости от значения этой переменной меняем рисунок курсора и соответсвенно обработку действий. [Отвечает: Feniks]: Для изменения курсора мыши необходимо использовать свойство Cursor. Оно находится у всех Контролов и у TButton в том числе. А также еще можно менять курсор не только у отдельных Контролов, а у проги в целом, т.е. при наведении мыши на форму, не зависимо на какой компонент, мыша меняется. Для этого этого надо юзать Screen.Cursor Подробно о классе TScreen написано в хелпе. А вот как уже тебе рисовать чего-нибудь - это уже совсем другая петрушка. Читай в хелпе TCanvas, т.к. все рисование происходит именно на Канве контролов. У нее есть разные функции для рисования. [Отвечает: Iron Monk]: Всем привет! Попробуй так:
[Отвечает: Садовников Владимир]: Можно рисовать прямо на форме, можно прямо на TImage (тогда не надо париться с преобразованиями координат), можно на TPanel, взяв у неё дескриптор экрана функцией GetDC(TPanel.Handle). В событии OnMouseDown или OnMouseUp меняешь состояние переменной. В OnMouseMove проверяешь твою переменную и, если надо рисовать, то рисуешь. Вот самый простой пример:
[Отвечает: MagicSasha]: Если тебе нужен код, чтобы менялся вид курсора при нажатии на кнопку рисования, то вот он:
[Отвечает: Dasha]: Предлагаю такой код:
58. (Использование Microsoft Speech Object Library). [Отвечает: Feniks]: Попробуй поискать на сайте самих Microsoft: 61. (Параметры командой строки приложения). [Отвечает: Feniks]: Смотри в хелпе функции ParamCount и ParamStr. Там есть и примеры. Первая, возвращает количество указанных параметров в командной строке. Все параметры должны отделяться между собой знаком пробела " ". А вторая функция, ParamStr[Х], как раз то, что тебе надо. Это массив указанных параметров, где Х - номер параметра по порядку, начиная с 1, т.к. 0-й индекс даст тебе полный путь и имя файла. [Отвечает: pasha]: Ну проще всего так:
Компилим и подсовываем этот экзешник вместо той программы не забыв, понятно его переименовать в тот.ну а потом читаем результаты. Правда не совсем понятно, с чего проблема. Бывают конечно приложения из нескольких дружащих экзешников, тогда да. 57. (Вызова в WebBrowser файлов). [Отвечает: Iron Monk]: Всем привет!
В поле Edit1.Text введи название своего файла. Попробуй поэкспериментировать со значением Flags - от 0 и далее, чтобы понять, что он меняет. 59. (Работа с базами MSAccess без использования BDE). [Отвечает: Садовников Владимир]: [Отвечает: Den]: Использую ADO, там есть компонент - ADOConnection. У него есть свойство ConnectionString, просто заполняешь значения в мастере настройки и всё. Ещё можно перед конектом изменять путь к нужной БД...
5. (Стиль Windows XP). [Отвечает: Lyubimov Pavel]: Слить из инета специальные компонентики. [Отвечает: VeroLom]: Что бы использовать ХР-стиль, надо создать файл с именем <программа>.exe.manifest и содержанием:
Ещё это можно прицепить в виде ресурса, но подробностей не помню. 13. (Откуда скачать Delphi 6). [Отвечает: VeroLom]: В p2p-сетях (DC++, Kaazaa, eDonkey и т.д.) [Отвечает: Lyubimov Pavel]: http://www.borland.com/devsupport/delphi/downloads/ 41. (Иконки в пунктах PopupMenu). [Отвечает: Lyubimov Pavel]: Создаешь ImageList и грузишь его картинками, потом у popupmenu меняешь значение ImageIndex на нужный номер. [Отвечает: PWL]: Я так понял, что это типа слева иконки размером 15х15 пикселей
или меньше... Ну не важно какой размер... 10. (Определение размера больших файлов). [Отвечает: mail.ru]: Ответ:
11. (Иконка в трее). [Отвечает: Lyubimov Pavel]: Свернуть в трей можно, слив специальный компонент. Вообще, была где-то стандарная процедурка типа SetTrayIcon(). 17. (Копирование URL в Memo). [Отвечает: Lyubimov Pavel]:
45. (Запуск приложений). [Отвечает: VeroLom]:
[Отвечает: Lyubimov Pavel]: The ShellExecute function opens or prints a specified file. The file can be an executable file or a document file. See ShellExecuteEx also. 24. (DelphiX). [Отвечает: VeroLom]: На счёт других - не знаю, библиотека DelphiX больше не обновляется. 25. (Ресурсы в DLL). [Отвечает: Lyubimov Pavel]: Создаешь DDL модуль, создаешь ImageList, запихиваешь картинки, компилишь. 30. (Редактирование реестра с командной строки). [Отвечает: Lyubimov Pavel]: Создаешь reg-файл , прячешь подальше, а батом только запускаешь его. [Отвечает: VeroLom]: Создаёшь батник типа: @echo off 36. (Изменение курсора на песочные часы). [Отвечает: Сергей Загородних]: Если надо поменять курсор на время выполнения какого-нибудь процесса, то :
39. (Загрузка текста DOS). [Отвечает: VeroLom]: 2. Выбери шрифт DOS (например, System или Terminal) и открываешь, как обычно. 43. (Генерация паролей). [Отвечает: VeroLom]:
Пример использования: 44. (Ресурсы по Delphi). [Отвечает: VeroLom]: torry.net, delphigfx.narod.ru, sources.ru. 49. (Блокировка повторного запуска программы). [Отвечает: VeroLom]: Открываешь исходник проекта (Project - View source) и изменяешь:
60. (Интерфейс программы для тестирования). [Отвечает: Iron Monk]: Я добавил форму менеджера и кнопку "Test" для её активации. Всё остальное привязано к исходнику. (Изменённый исходник ЗДЕСЬ). Быстрые ответы. Помогите, пожалуйста. Как после ввода строки в Edit1.Text и нажатия ENTER, автоматически выполнялась процедура нажатия Button1. Заранее спасибо. У Edit1 в OnKeyDown написать: If Key=VK_RETURN Then Button1.Click; Вы также можете ответить на предыдущие вопросы. Поскольку на них уже ответили как минимум раз, они больше не публикуются в рассылке. Но если вы можете что-то добавить к ответам других, пожалуйста, отвечайте - ответы будут опубликованы. Найти предыдущие вопросы вы можете на нашем сайте: http://www.delphi-faq.fatal.ru/ или в спец-выпусках рассылки. |
||||||||||||||||||||||||||||||||||||||||||||
Delphi 4: Автоматизация приложений MS® Office® для эффективного анализа результатов
Глава 1. Работа с MS Excel.Часть 2: Лучшее решение - шаблоны.Евгений Старостин. Excel, интегрированный с моими приложениями, хорош (для меня - программиста) только по одной причине. Я всегда создаю шаблоны и использую их потом при построении отчетов. Шаблоны позволяют мне избежать ручного (в исходном тексте) форматирования. В общем случае, алгоритм выглядит просто: по шаблону создается книга, каким-то образом помеченные области заполняются данными и... (а дальше все уже готово). Как я создаю книгу по шаблону: Delphi 4.0 / 5.0 function TForm1.AddWorkbook(const WorkbookName: string): Excel8TLB._Workbook; begin Result := nil; if Assigned(FIXLSApp) and (trim(WorkbookName) <> '') then begin Result := FIXLSApp.Workbooks.Add(WorkbookName, 0); end; end; В этом коде нет ничего сложного. В принципе при работе с Excel я мало находил мест, где что-либо сделать было бы сложно. Чаще достаточно прочитать справку по VBA или записать макрос (благо, Microsoft встроила в Excel хороший пишущий player). После выполнения этого метода будет добавлена книга, близнец шаблона, с именем шаблона и порядковым номером (как "Книга1.xls" или "Книга228.xls"). Правда здесь есть одна тонкость. Эти "циферки" в имя книги Excel добавляет после поиска книг с таким же названием в каталоге по умолчанию. Я несколько раз наступал на грабли (больно!), когда пытался сохранять книги в другом каталоге и создавать новую - по этому же шаблону. К сожалению, не может эта "злобная" программа держать открытыми несколько книг с одинаковыми названиями, несмотря на то, что они лежат в разных каталогах. ![]() Как я помечаю области, в которые необходимо разместить данные? В Excel существует возможность объединить ячейки в группу и поименовать эту группу. В терминах Microsoft это объект Range (область). Для своего проекта я создал тестовую книгу "Test.xls", в которой на листе "Лист1" разместил область "TestRange" (см. рисунок). Более того, для ячеек этой области я указал форматы вывода (Field4 - дата, Field3 - красный цвет шрифта). Я надеюсь, что после переноса тестовых данных форматы сохранятся. Что есть шаблон без данных в нем?Существует масса способов передать данные в Excel, начиная с DDE и заканчивая обычным присваиванием (типа Cell.Value := NewValue ). Конечно, максимальную скорость передачи данных можно получить, только используя DDE. Но я отказался от этого пути из-за некоторых ограничений и давно смущающего меня флажка в настройках Excel ("Игнорировать DDE-запросы"). Поэтому здесь я опишу менее эффективный, но работоспособный, путь решения этой проблемы. Итак, после нажатия кнопки CreateExcel имеем открытый шаблон с листом "Лист1" и областью с именем "TestRange". Для чистоты эксперимента (скорей из лени, великая вещь - собственная лень) я описал константный массив с тестовыми данными - TestDataArray. Именно эти данные я и передаю в ячейки области: Delphi 4.0 procedure TForm1.btnDataToBookClick(Sender: TObject); var LaunchDir: string; IWorkbook: Excel8TLB._Workbook; ISheet: Excel8TLB._Worksheet; IRange: Excel8TLB.Range; NewValueArray, V: OLEVariant; i: integer; begin if Assigned(IXLSApp) then begin LaunchDir := ExtractFilePath( ParamStr(0) ); IWorkbook := AddWorkbook(LaunchDir + 'Test.xls'); try ISheet := IWorkbook.Worksheets.Item['Лист1'] as Excel8TLB._Worksheet; IRange := ISheet.Range['TestRange', EmptyParam]; NewValueArray := VarArrayCreate([0, 20, 1, 4], varVariant); for i := 0 to 20 do begin NewValueArray[i, 1] := TestDataArray[i].V1; NewValueArray[i, 2] := TestDataArray[i].V2; NewValueArray[i, 3] := TestDataArray[i].V3; NewValueArray[i, 4] := date + i; end; IRange.Value := NewValueArray; finally IRange := nil; ISheet := nil; IWorkbook := nil; end; end; end; Delphi 5.0 procedure TForm1.btnDataClick(Sender: TObject); type var LaunchDir: string; IWorkbook: Excel97.ExcelWorkbook; ISheet: Excel97.ExcelWorksheet; IRange: Excel97.Range; NewValueArray, V: OLEVariant; i: integer; begin if Assigned(IXLSApp) then begin LaunchDir := ExtractFilePath( ParamStr(0) ); IWorkbook := AddWorkbook(LaunchDir + 'Test.xls'); try ISheet := IWorkbook.Worksheets.Item['Лист1'] as Excel97.ExcelWorksheet; IRange := ISheet.Range['TestRange', EmptyParam]; NewValueArray := VarArrayCreate([0, 20, 1, 4], varVariant); for i := 0 to 20 do begin NewValueArray[i, 1] := TestDataArray[i].V1; NewValueArray[i, 2] := TestDataArray[i].V2; NewValueArray[i, 3] := TestDataArray[i].V3; NewValueArray[i, 4] := date + i; end; IRange.Value := NewValueArray; finally IRange := nil; ISheet := nil; IWorkbook := nil; end; end; end; Я знаю, что многие профессионалы (к коим, к сожалению, я не принадлежу) взвоют от негодования при виде такого кода. Их можно понять, они знают намного более эффективные решения. Именно об этих решениях я и собираюсь написать в следующий раз. А вы пока не забудьте почитать комментарии в проекте-примере. 1. Скриншот из текущей статьи: Открыть. 2. 1-ая часть цикла статей по Excel: Открыть. 3. 2-ая часть цикла статей по Excel: Открыть. 4. Демо-программа-1 к статьям: Скачать. Присылайте свои статьи по адресу delphi-faq@list.ru с темой 'Clause' (без кавычек), и они будут опубликованы в ближайших выпусках рассылки. Большая просьба: статью оформляйте в -txt или -doc формате и используйте -zip или -rar сжатие (без самораспаковки). |
||||||||||||||||||||||||||||||||||||||||||||
В данном разделе публикуются различные ссылки, причём не только по Delphi но и по OpenGL, WinAPI, DirectX и т.д. (они могут быть на других языках, например, на Си). Присылайте свои ссылки на документацию по программированию. К сожалению, сегодня новых ссылок нет :( |
||||||||||||||||||||||||||||||||||||||||||||
Извините меня, дорогие читатели, но сегодня в "Кладовой" ничего нового нет. Просто на неделе (да и сейчас, на выходных) очень мало свободного времени, поэтому ничего найти не успел, кое-как выпустил саму рассылку... В следующем номере всё обязательно будет!
|
||||||||||||||||||||||||||||||||||||||||||||
Здесь представлены ссылки на дружественные сайты нашего портала. Если вы тоже хотите стать нашим другом, разместите баннер на главной странице своего сайта. Подробнее о том, как стать другом, можно прочитать здесь: http://www.delphi-faq.fatal.ru/banner.htm, а узнать о всех наших друзьях - на странице http://www.delphi-faq.fatal.ru/friends.htm http://infomania2004.webhost.ru/ - Этот сайт создан для того, чтобы вы могли получить интересующую вас информацию с минимальными затратами сил и времени. Если вы не нашли здесь нужной информации, вы можете оставить заявку на ее поиск. Как только информация будет найдена, она появится на сайте, а вам сообщат об этом. |
||||||||||||||||||||||||||||||||||||||||||||
В Интернет-клуб врывается взъерошенный парень с пистолетом: *** Просыпаются утром парень с девушкой, грустный серый осенний день. подходят к окну. Девушка: *** Семья компьютерщиков. У папы комп, у мамы комп, и маленькому сынишке комп купили. Он сидит за ним 24 часа в сутки, предки волнуются - типа ребенок развивается однобоко, надо его как-то отвлечь от компьютера! Решили купить ему какое-нибудь животное. Долго думали, какое именно, купили черепаху. Проходит несколько дней, папа с мамой видят - ребенок сидит в своей комнате, вертит в руках черепаху, ковыряет в ней отверткой: *** Хакеры из Санкт-Петербурга взломали сеть Microsoft и внесли изменения в ключевые коды новейших разработок корпорации. Microsoft выражает им благодарность - теперь всё работает. *** Познакомился интернетчик с девушкой, погуляли, он и спрашивает: Присылайте свои "компьютерные" анекдоты по этой ссылке: Delphi-FAQ@list.ru и они обязательно будут опубликованы! Нецензурные анекдоты не публикуются! |
||||||||||||||||||||||||||||||||||||||||||||
Товарищи программисты! Проявляйте свою активность. Давайте помогать друг другу! Если вы не нашли ответа на свой вопрос, не отчаивайтесь! Ведь количество подписчиков постоянно растёт и, наверняка, найдётся тот человек, который поможет вам! На сегодня всё. До встречи через неделю! |
||||||||||||||||||||||||||||||||||||||||||||
Сайт рассылки: http://www.delphi-faq.fatal.ru/ E-mail: Delphi-FAQ@list.ru Страница рассылки: http://subscribe.ru/catalog/comp.soft.prog.delphifaq |
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: comp.soft.prog.delphifaq |
Отписаться |
В избранное | ||