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

Интернет для Delphi-программиста


Информационный Канал Subscribe.Ru

Интернет для Delphi программиста.

Выпуск : № 32


Здравствуйте уважаемые подписчики рассылки "Интернет для Delphi программиста". Данная рассылка предназначена для всех кого интересует Delphi, здесь будут выкладываться ссылки на различные ресурсы интернета так или иначе связанные с Delphi: книги, исходники, программы... Изучайте Delphi один из лучших языков программирования!!!


ЗАДАТЬ ВОПРОС :

Правила рассылки: 
1. Не присылайте ответов на вопросы типа "да, нет".  
2. Если отвечаешь на вопрос - то отвечай подробно с примерами (желательно с исходником примера).
3. Тема вопросов - программирование на Delphi.
Внимание авторам: - Я не указываю ваши адреса из-за спама, но кто хочет, чтобы его email был - пишите, иначе только имя(ник).
Отправить вопрос


Новые вопросы.


Вопрос № 70 задаёт: Владимир  Ответить
Где можно наиболее полно получить информацию о программировании,компонентах Delphi 6, Delphi 2005, для программирования приложений с Internet, конкретно- с прототколами POP3,SMTP?
Вопрос № 71 задаёт: Новиков Олег Ответить
Подскажите пожалуйста, как изменить дату создания каталога?
Вопрос № 72 задаёт: KenBurg Ответить
Hello всем!!!
Это фрагмент кода для чтения текст/файла по строкам:
 
AssignFile(f,fname);
Reset(f);
 
Readln(f,buf);
Form1.RichEdit1.Text := buf;
Readln(f,buf) ;
Form1.RadioButton1.Caption := buf;
Readln(f,buf);
Form1.RadioButton1.Tag := StrToInt(buf);
Readln(f,buf);
Form1.RadioButton2.Caption := buf;
Readln(f,buf) ;
Form1.RadioButton2.Tag := StrToInt(buf);
Readln(f,buf) ;
Form1.RadioButton3.Caption := buf;
Readln(f,buf) ;
Form1.RadioButton3.Tag := StrToInt(buf);
 
а это текст файл:
 
Вопрос1.
Ответ1.
0
Ответ2.
1 // правильный ответ
Ответ3.
0
Вопрос2.
Ответ1.
1 // правильный ответ
Ответ2.
0
Ответ3.
0
 
и.т.д.
т.е. читает строки последовательно 1, 2, 3 ...
Вопрос: как читать не последовательно а N строку (напр. 8, 50 или 99) т.е. сразу перейти на нужную? 
Если можно фрагмент кода, плз.
Заранее благодарю всех и удачи в программировании!!!    
    

Ответы.

Вопрос № 65 задаёт: Михаил  Ответить
Подскажите пожалуйста, как в StringGrid изменить цвет выделенной ячейки, например на зеленый?
Отвечает: CombaSoft 
Оговорюсь сразу - с данным компонентом до этого момента не работал, так что если мой
вариант будет не самый оптимальный - звиняйте :).
Вобщем делается это в два этапа. Во-первых я обзавожусь двумя
глобальными x и y of integer; Во-вторых (1-й этап), ставлю обработчик на евент
OnSelectCell. :
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
 x := acol;
 y := arow;
 StringGrid1.Repaint;
end;
Т.е. сначала я запоминанию над какой ячейкой произошел клик мышкой, а
потом делаю перерисовку компонента.
Далее (2-й этап), в самой перерисовке компонента нам дается возможность менять
фон клетки. :

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
 if ((x >0) and (y>0 )) then begin
 if ((acol = x)and (arow = y)) then begin
 StringGrid1.Canvas.Brush.Color := clGreen;
 StringGrid1.Canvas.FillRect(rect);
 end;
 end;
end;
Что бы верхняя левая клетка не окрашивалась в заданный цвет, я
поставил условие на ячейку[0,0].
 Собсно это все. Удачи!     
     
Отвечает: Dasha 
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if (ACol = StringGrid1.Col) and (ARow = StringGrid1.Row) then
  StringGrid1.Font.Color:=clGreen;
end;     
     
Вопрос № 68 задаёт: #One®  Ответить
Требуется, чтобы приложение узнало, когда Виндоус закрывается. Как это сделать?
Отвечает: Dead Lord 
Лучше всего (читай-проще) использовать функцию GetMessage и ловить сообщение WM_Quit, которое должно стоять в очереди комманд при завершении работы винды (если я ничего не путаю:)). В качестве хендла (HWND)окна пиши NULL Функция должна вернуть ноль


Статья:   Создание кнопок средствами Win API. http://decoding.narod.ru/api/button/button.html

 



Сегодня мы поговорим о том, как создаются кнопки. За основу возьмем наш шаблон (если вы не читали статью "Минимальная программа на Win API", прочтите, именно с этим шаблоном мы будем работать). На некоторых кнопках нарисуем стандартные иконки, на некоторых выведем текст. И конечно обработаем событие, вызываемое нажатием на кнопку. Кроме этого, кнопки с текстом смогут иметь "фокус", который будет оставаться после нажатия на одну из них.

Начнем с того, что для каждой кнопки создадим константу с уникальным идентификационным номером. Объявление самих кнопок удобнее всего сделать в виде массива, это сделает код более компактным. Также создадим переменные для работы с иконками и шрифтом.


const
  // Кнопки, на которые будут выведены иконки
  BTN_APPLICATION = 0;
  BTN_HAND =        1;
  BTN_QUESTION =    2;
  BTN_EXCLAMATION = 3;
  BTN_ASTERISK =    4;
  BTN_WINLOGO =     5;
  // Кнопки, на которые будет выведен текст
  BTN_TEXT_0 = 6;
  BTN_TEXT_1 = 7;
  BTN_TEXT_2 = 8;

var
  Buttons: array[0..8] of HWND;
  Icon: HICON;
  Font: HFONT;

Кнопка, по своей сути, немногим отличается от главной формы приложения (это самостоятельное окно, имеющее "родителя", и обладающее своим собственным дескриптором). По этому для ее создания воспользуемся уже знакомой функцией CreateWindowEx. Посмотрим, как создается кнопка с иконкой.


Buttons[0] := CreateWindowEx( WS_EX_STATICEDGE, 'Button', nil, BS_ICON or WS_VISIBLE or WS_CHILD,
                              10, 15, 40, 40, Wnd, BTN_APPLICATION, hInstance, nil );
// Получаем описание нужной иконки
Icon := LoadIcon( 0, IDI_APPLICATION );
// Вставляем полученную иконку в кнопку
SendMessage( Buttons[0], BM_SETIMAGE, IMAGE_ICON, Icon );

Второй параметр функции CreateWindowEx говорит о том, что мы создаем именно кнопку. Определяя стиль кнопки, мы указываем, что она имеет родителя (WS_CHILD, дескриптор родителя указывается в 9-ом параметре) и будет отображать иконку (BS_ICON). С остальными параметрами мы уже знакомы. Функция LoadIcon загружает указанную иконку в наше приложение. Если первый параметр 0 (как в нашем случае), это значит, что мы работаем со стандартными системными значками (их константы указаны в модуле Windows). Загрузив иконку, назначаем ее кнопке, послав соответствующее сообщение. Остальные кнопки создаются по аналогии.

Теперь поговорим о кнопках с текстом.


   Buttons[6] := CreateWindowEx( WS_EX_STATICEDGE, 'Button', 'Button1', WS_VISIBLE or WS_CHILD,
                                 10, 70, 90, 40, Wnd, BTN_TEXT_0, hInstance, nil );
   Font := GetStockObject( ANSI_VAR_FONT  );
   SendMessage( Buttons[6], WM_SETFONT, Font, 0 );

   Buttons[7] := CreateWindowEx( WS_EX_STATICEDGE, 'Button', 'Button2', WS_VISIBLE or WS_CHILD,
                                 110, 70, 90, 40, Wnd, BTN_TEXT_1, hInstance, nil );
   Font := GetStockObject( ANSI_FIXED_FONT );
   SendMessage( Buttons[7], WM_SETFONT, Font, 0 );

   Buttons[8] := CreateWindowEx( WS_EX_STATICEDGE, 'Button', 'Button3',
                                 BS_DEFPUSHBUTTON or WS_VISIBLE or WS_CHILD,
                                 210, 70, 90, 40, Wnd, BTN_TEXT_2, hInstance, nil );

Основное отличие от создания предыдущих кнопок заключается в том, что в 3-ем параметре вместо nil пишется заголовок кнопки. Обратите внимание, в описании стиля отсутствует константа BS_ICON. В принципе этого достаточно для того, чтобы отобразить надпись на кнопке (посмотрите на создание последней кнопки - Buttons[8]). Однако мы можем кое-что сделать с текстом, а именно, изменить стиль шрифта. Делается это с помощью функции GetStockObject, параметром которой и задается необходимый нам стиль.

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

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


function WindowProc( Wnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM ): LRESULT; stdcall;
begin
   case Msg of
      WM_DESTROY: begin
         PostQuitMessage( 0 );
         Result := 0;
         Exit;
      end;
      // Обработка сообщений от кнопок
      WM_COMMAND:
         case LoWord( wParam ) of
            BTN_APPLICATION: MessageBox( Wnd, 'IDI_APPLICATION', 'Константа:', MB_OK );
            BTN_HAND:        MessageBox( Wnd, 'IDI_HAND', 'Константа:', MB_OK );
            BTN_QUESTION:    MessageBox( Wnd, 'IDI_QUESTION', 'Константа:', MB_OK );
            BTN_EXCLAMATION: MessageBox( Wnd, 'IDI_EXCLAMATION', 'Константа:', MB_OK );
            BTN_ASTERISK:    MessageBox( Wnd, 'IDI_ASTERISK', 'Константа:', MB_OK );
            BTN_WINLOGO:     MessageBox( Wnd, 'IDI_WINLOGO', 'Константа:', MB_OK );
            BTN_TEXT_0: begin
               MessageBox( Wnd, 'Button1', 'Кнопка:', MB_OK );
               SetFocus( Buttons[6] );
            end;
            BTN_TEXT_1: begin
               MessageBox( Wnd, 'Button2', 'Кнопка:', MB_OK );
               SetFocus( Buttons[7] );
            end;
            BTN_TEXT_2: begin
               MessageBox( Wnd, 'Button3', 'Кнопка:', MB_OK );
               SetFocus( Buttons[8] );
            end;
         end;
      else
         Result := DefWindowProc( Wnd, Msg, wParam, lParam );
   end;
end;

Как видим, нам нужно обработать сообщение WM_COMMAND. Параметр wParam хранит уникальный идентификатор кнопки, которая вызвала это событие. Сравниваем его с определенными в самом начале константами, идентифицируем кнопку, и выполняем связанный с ней код.

И последнее на сегодня. В нашей программе кнопки с текстом должны иметь фокус. Для этого, после выполнения кода, связанного с кнопкой, вызываем процедуру SetFocus. Теперь посмотрим, как это работает. После того, как мы уберем сообщение, вызванное нажатием на одну из трех нижних кнопок, мы увидим на ней пунктирный прямоугольник, нарисованный рядом с бордюром. Это и есть результат работы процедуры SetFocus. Теперь, нажав на клавишу "пробел", мы заставим эту кнопку сработать.

На этом все. Успехов в программировании.

.: Пример к данной статье :.

Исходники:   

MP3Player

Простенький MP3-плеер, написанный на Delphi.

Flame

Пламя с использованием DirectDraw.

Paper Airplane

Программа, демонстрирующая процесс сложения различных фигур из листа бумаги.

Морской бой

Морской бой. Игра использует DelphiX, поэтому для её компиляции вам потребуется этот пакет. Превосходная графика и качественный звук.

Космическая стрелялка

Полноэкранная вертикальная стрелялка на космическую тему.
Симпатичная графика, особо радуют микродвигатели, которыми ракета перемещается влево-вправо и назад (для перемещения вперед никакой "особенной" анимации не придумано -)).
Играть не слишком легко, во всяком случае, читать одновременно книжку не получится ;-)
Используемые библиотеки: DelphiX

игра "Отморозок"

"Отморозок" - моя старая игруха, написанная (но недоделанная) давным давно (где-то зима 2004 г), после впечатлений от другой текстовой игры... вообщем уже не помню названия. Сделана она была на турбо паскале (как я думаю), и увлекала не графикой (которой там вообще не существовало - однако текстовая :) а необычным (для меня) командным управлением, и интересным геймплеем. Естественно все события были random'ные, но баланс игрухи - на высоте.
Предупреждение: цензурой в игрухе и не пахнет, поэтому для тех, кто является "приличным человеком", играть не рекомендуется.
Игруха состоит из:
1) главной формы - GUI приложение (папка GUI)
2) движка игрухи - dll'ка (папка dll)
3) help и стартовая страница - txt и rtf (папка bin)
Для программистов: вам будет интересна реализация динамической работы с dll, и реализация движка игры в оной. Все функции и переменные названы в соответствии с их ролью в игре. Естественно если кто захочет её доделать, или переделать - Ваше право.
ЛИЦЕНЗИЯ: делай с ней что хочешь...

AudioDeformator 2004

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

HTML ALbum v0.01 alpha

Генератор html фотоальбома, используется JEDI VCL 3

Loader v0.04 beta

Загрузчик файлов на локальный диск из сетевого диска, и запуск одного из них. Своего рода инсталлятор. А нужно это для того, чтобы у пользователя гарантированно запускалась текущая версия софта.

MoveToYearDirs

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

AnimForm

Анимация формы. Открытия закрытие, минимизация.

SisInfo

Эта небольшая программка позволяет следить за текущим состоянием системы, т.е. Просматривать процессы, потоки, кучи, окна, списки загруженных модулей, а также все это дело завершать/закрывать.
Конечно, это не ахти какие возможности, но в будущем в программу будет добавлена способность все эти параметры изменять (приоритет потоков/процессов, позиция/размер окон, просмотр куч + многое другое...).

Pol

Этот пример демонстрирует создание формы в виде звёздочки.

Kuchkin

Программаа создания ярлыка на рабочем столе.


Компоненты:   

PlnClock v.1.22

Аналоговые часы (компонент). Полностью настраивается.

TIcon32 v.1.0

Визуальный компонент для просмотра 32-битных иконок.

THotSpotImage v.1.1

Изображения-hotspots(горячие точки, кнопки), подобные тем, что используются на сайте www.ImageMap.com Кнопки могут быть прямоугольниками, эллипсами, многоугольниками или вращающимися прямоугольниками, вращающимися эллипсами. Обработчики горячих точек позволяют получить эффект парения, подсказок, нажатия, двойных щелчков.

HashLib! v.1.03

HashLib! - это быстрая и гибкая библиотека для Delphi и C++ Builder, работающая с хэш-алгоритмами MD2, MD4, MD5, SHA-1, SHA (256, 384, 512), Haval (128, 160, 192, 224, 256), GOST R 34.11-94, Ripe-MD (128, 160), Tiger (128, 160, 192), CRC32, CRC32b, Adler32. Простой общий интерфейс (собственный API для каждого алгоритма), функции низкого и высокого уровня (буферы, строки, файлы). Шаблоны для самопроверки. Малый размер (SysUtils и другие системные модули не используются). Некоторые функции переписаны на Ассемблере. Включены примеры на C++ и Delphi.

THarmFade v.2.3

HarmFade производит эффект анимации. Это - переход от одного TPicture к другому, используя эффекты 'Blend' и 'Disslove'. Выглядит симпатично. Будет работать на 256 цветах, также спроектирован для 16- и 24-битного цвета. Поддерживает форматы jpg, wmf, а также ico. В этой версии добавлены новые события...

Animator v.1.0

Компонент предназначен для анимирования (в прямом или обратном порядке) изображений, находящихся в ImageList. Хороший набор свойств и событий. Полнофункционален.

PHP4Delphi 5.0.3

PHP4Delphi 5.0 это первая визуальная оболочка для разработки и работы с PHP объектами, используя Delphi. PHP4Delphi к тому же позволяет исполнять PHP скрипты внутри Delphi-программ непосредственно из файла или памяти. Имеется возможность читать и изменять PHP переменные и результирующие значения. PHP4Delphi позволяет внедрять PHP интерпретатор в Ваши Delphi приложения. Новое в версии 5.0: * PHP API и ZEND API преобразование с языка C в Delphi; * psvPHP компонент, работающий непосредственно в Delphi без дополнительных DLL; * phpLibrary компонент, который позволяет добавлять новые PHP функции в psvPHP компонент; * новая визуальная оболочка с расширенными возможностями.

HTML Template Component v.2.3

Требуется создать HTML, XML или текстовый отчёт? Воспользуйтесь HTML Template Component - он работает подобно хорошо известным ASP и JSP технологиям и позволяет создавать HTML (XML, SGML, текст) страницы с помощью шаблонов. Работает на клиентской стороне без сервера HTTP и может обращаться к объектам приложения и данным. Для проектирования отчётов можно воспользоваться любым редактором.


Справочники:   

Delphi Faq

Некоторые вопросы по Delphi и ответы на них.
Составители: Александр Сергеев, Вадим Миллер, Dima Kuzmenko.

Описание RxLib

Список и описание функций RxLib.

Средства создания Internet-приложений в Kylix и Delphi 6

Средства создания Internet-приложений в Kylix и Delphi 6/
Автор Никита Попов
© КомпьютерПресс #6'01, Borland.ru

Документация к QuickReport 3

Документация к QuickReport 3
Перевод на русский язык Анатолий Подгорецкий

Работаем с Delphi

Справочная система по DELPHI Версия 1.0
Исходные тесты этих уроков были получены мной в Internet в виде zip-архива (>32Mb) и для удобств использования были конвертированы мною в hlp-формат. Надеюсь, это было проделано не зря :-)
ВНИМАНИЕ :
Авторы исходных текстов -Демо центр http://www.demo.ru
Автор данного hlp файла Малышев Олег В.

Сборник советов по Delphi

Руководство по программированию
Списки функций
Советы профессионала


Книга:   От ЦПИ "Эверест" http://umnik.rikt.ru/everest/distant/e-book_sm.htm 

Ишмуратов Р.К. и Карачи А.Ю. представляют демонстрационную версию уникального курса "Delphi: от инсталляции до первых игр".
Подарочный вариант подготовительного курса. Cкачать. (1,12 МБ)
(ссылку открыть в браузере)


Интересные и полезные сайты по Delphi: Если Вы хотите, чтобы Ваш сайт был в этом разделе пишите.

http://www.noil.pri.ee/ - Здесь вы можете почитать статьи, скачать исходники и компоненты, пообщаться на форуме.


Немного юмора:  :))

Hовая акция в нашем магазине: "Купите у нас 1000 мегабайт оперативной памяти - и 24 мегабайта вы получите абсолютно бесплатно!"


Построили в США очередной суперкомпьютер. Задали ему задачу предсказания будущего. Позвали президента Буша - чтоб показать. Буш подумал-подумал и спросил: 
- Когда начнется 3-я мировая война? 
- В 2хххх году. Буш думает, чего бы еще спросить. 
- А сколько будет стоить пепси-кола после 3-й мировой войны? 
- Пепси будет стоить пятьдесят копеек.


Знание ассемблера не освобождает от посредственности...


- Девушка, можно назначить вам свиданье,(кадрил девушку д00мер)
- Да..., - смущаясь, ответила та, - а где? 
- А ночью, в сетке, я вас там стало быть и убью пару раз... А потом вы меня....


Совет человеку ставящему windows: не сломай палец об reset!


Говорят что Билл Гейтс сделал свой бизнес следующим образом - он ложил клавиатуру на стул, и прыгал по ней своей задницей некоторое время, а потом компилировался и продавал что получилось. 
Узнав об этом несколько ламеров решили тоже сделать что-нибудь потрясное (MD 99) и сев на клавиатуры прыгали время Тэ, когда же отбили все задницы, то компильнулись, запустились и прочли:
- Хренушки ребята, задницей только Билли что-то написать может..


Собрался на рыбалку? Накопай червей на avp.ru!



Дружественная рассылка:

Рассылки Subscribe.Ru
Программирование на Delphi


Все кто хочет изучить Delphi и реально научиться писать свои программы, ЦПИ "Эверест" поможет Вам.
Всё, что Вам нужно это компьютер и доступ к интернету - для получения уроков.

10 причин в пользу платного обучения в ЦПИ "Эверест"…

1. Когда Вы платите деньги- появляется дополнительный стимул против лени: надо учиться, ведь деньги уже уплачены….
2. Учась платно, получаете удобный для Вас график работы.
3. Весь необходимый справочный материал Вы получите в свое время и на русском языке.
4. Используя интернет в качестве бесплатной библиотеки, Вы получаете все ее минусы:

  • трата времени на поиск необходимого материала (а это потерянные деньги и время). А у Вас есть лишние время и деньги?;
  • отсутствие гарантии, что Вы "осилите" данный материал, ведь пишут его, в основном, не педагоги- профессионалы, а программисты- профессионалы, а они пишут для таких же, как они. А Вы программист- профессионал?
  • отсутствие системности в скачиваемом материале (ведь человек, писавший для Вас материал, не знает, чем Вы владеете). А Вы обладаете системой знаний по Delphi?;

5. Стоимость обучения одного месяца в ЦПИ "Эверест" сравнима с ценой хорошей книги. Но часто ли Вам попадались книги, рассчитанные именно на Вас. Мы же работаем индивидуально.
6. Автор книги или магазин не несет никакой ответственности за то, поняли ли Вы материал или нет, мы же закрепляем за каждым курсантом преподавателя, курирующего Вас.
7. Освоив программирование в Delphi - Вы освоите:

  • основы настоящего программирования- структурного и процедурного программирования ;
  • систему работы с базами данных и SQL- запросами, а это одно из самых перспективных направлений в программировании;
  • язык программирования ObjectPascal, что позволит Вам легко перейти, при желании, на С или Паскаль;
  • работу с компьютерной графикой;
  • при желании - основы низкоуровневого программирования ( Ассемблер).

8. А это значит, что …Мы предлагаем получить "высшее образование" - профессию программиста всего за 1 год и 144 доллара, любой ВУЗ попросит в 3 раза больше за один только семестр.
9. Вы получаете самый практический курс в сети, поскольку теория дается только тогда, когда она действительно необходима…
10. Учиться у нас легко и просто. Весь материал доступен и простым людям, не имеющим никогда дел с программированием….


По всем вопросам обращайтесь ко мне.

Если вы встретили в интернете интересный сайт или статью, да и вообще, что угодно связанное с Delphi, поделитесь ссылкой.
Если можете написать статью связанную с Delphi - присылайте с радостью выложу.
Давайте поможем друг другу!  Архив рассылки.

Предложения, критику и пожелания пишите на e-mail.


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiinternet
Отписаться
Вспомнить пароль

В избранное