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

СообЧА. Программирование на Delphi


Служба Рассылок Subscribe.Ru
Subscribe.Ru :СообЧа программирование на дельфи !
—Сообча : программирование на дельфи

Некому оформить сайт ?
Нужен красивый баннер ?
Нет времени на обновление сайта?

Качественное оформление, работа с самыми современными средствами, FLASH,CGI,JAVA
Тогда вам сюда !!!!
За 50$-100$ мы поможем


----- (перед просмотром рассылку лучше сохранить)

 

 В этом выпуске:

Грандиозное событие! Стартовал новый проект нашей рассылки , его название Alter Reality. Подробности можно узнать тут .

 

Скоро!!!! (к началу лета) на нашем сайте появится учебник по дельфи 5-6, где описан сам язык и подробно "разжевываются" его азы и высшие приемы. Название проекта "Ваша программа :от Mustdie к Musthave", все кто желают помочь статьями, пишите мне(Pixelу)

Фонд поддержки наших проектов и рассылки:
Получатель: ИНН 7707083893 Новгородское ОСБ № 8629
Счет получателя: 47422810343029900030
Банк получателя
:Новгородское ОСБ № 8629 г.Великий Новгород 30101810100000000698
Бик 044959698

Рассылки Subscribe.Ru это стильно удобно, и информативно!
СообЧа (СООБщество ЧАйников). Обмен опытом, вопросы, ответы.


подпишись и подпиши друга!!!!

 Contact (Связь с Нами):

Pixel@novgorod.net + Subject: (см ниже)

 

Vcl Haunting

"Золотой Чайник"

Вопрос по дельфи N (N номер версии)

Help!

Реклама

Полезный линк

 

Наш сайт : pixelsoft.narod.ru

Новости СЕТИ

К заголовку

****CD котый вам пригодится!!!****
Конструктор 3D игр: Этот, по сути уникальный CD , нечто среднее между языком программирования, 3д движком и лего конструктором(в том плане что можно соорудить что-либо стоящее из уже готовых "деталей"). Сам я пока обдумываю покупку данного диска, но тем, кто мечтает написать свою игру, с минимумом программирования просто обязан это купить.

Здесь можно купить диск и посмотреть пару скриншотов

Книги по Дельфи которые ВЫ ОБЯЗАНЫ ПРОЧИТАТЬ...

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

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

  • Дельфи 5: Руководство разработчика БД
  •  

    DirectX. Графика в проектах Delphi (+CD - ROM)
    Лучшее пособие для тех кто решил связаться с DirectX, по слухам на CD помимо примеров есть DirectxSDK7.0 от Microsoft...

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

    Программирование в Delphi 6 (+ floppy дискета ) Чайникам рекомендуется!!!

    Книга содержит методические и справочные материалы по новой версии системы визуального объектно-ориентированного программирования Delphi 6 и предшествующим версиям Delphi 5 и 4. Рассмотрены такие новые возможности Delphi, как кросс-платформенные приложения, технологии доступа к данным ADO, InterBase Express, dbExpress, компоненты — серверы СОМ, технологии распределенных приложений СОМ, CORBA, MIDAS, новая методика диспетчеризации действий...

 

Вызов объекта по его имени

К заголовку

Однажды сидел, писал программу и тут столкнулся с проблеммой, а именно: Как вызвать объект, который будет создан после компиляции и может иметь любое имя. Изначальные данные были представлены в виде имени этого объекта. Перерыв документации, начал искать зацепки в функциях типа Findcomponent и Findclass.

Вот, что получилось:

Допустим вы хотите вызвать объект Myobject с классом TImage и поменять его картинку. Вот код, который это действие демонстрирует.Замечу , что данный исходник уникален, и в сети такого не найти(пока)

......

(findobject('Myobject') as Timage).Bitmap.loadfromfile(FILENAME)

Для пояснения, воспользуемся цветовой дифференициацией. Зеленая часть кода, это имя икомого объекта, которое указывается в поле инспектора объектов. Это имя может быть любым, но вы должны предусмотреть случай, если объект с таким именем не существует. Красная часть кода, это ,так называемый Typecast, это характеризует классовую принадлежность объекта, если вы не правильно выставили его класс, то получите сообщение "Error: Invalid Typecast" при выполнении программы (компилятор не "экстросенс" и не проверит что вы там поставите через год , день и.т.д). Typecast используют, чтобы получить доступ к свойствам и методам вызываемого объекта, и он может быть люьым (за исключением указателя(Tpointer)т.к этот тип больше относится к переменным и попадает под действие процедуры "собрата" Findclass ).

Данный код будет полезен в программах типа: парсеров кода, редакторов карт/3д моделей и конечно же играх.

 

 

Указатели на процедуру

К заголовку

Это то, что я нашел при создании простой машины состояний:

Ниже приведен простой пример для Borland Delphi, использующий указатели функций для управления программным потоком. Просто создайте простую форму с единственной кнопкой и скопируйте код из Unit1 во вновь созданный модуль. Добавьте к проекту Unit2 и скомпилируйте проект. Дайте мне знать, если у вас возникнут какие-либо проблемы.

--------------------------------------------------------------------------------
interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;

type

TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var

Form1: TForm1;
CurrProc : LongInt;
MyVal : LongInt;

implementation

uses Unit2;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var

NewProc : LongInt;
MyString : string;
begin

CurrProc := 2; { начальная точка в таблице методов }
MyVal := 0; { вспомогательная переменная }
NewProc := 0; { возвращаемое значение для следующего индекса в таблице методов }
while CurrProc < 6 do
begin
{ выполняем текущий индекс в таблице методов и получаем следующую процедуру }
NewProc := ProcTable[CurrProc](MyVal);


{ просто показываем значения NewProc и CurrProc }
FmtStr(MyString, 'NewProc [%d] CurrProc [%d]', [NewProc, CurrProc]);
MessageDlg(MyString, mtInformation, [mbOK], 0);


{ присваиваем текущую процедуру возвращаемой процедуре }
CurrProc := NewProc;
end;

end;

end.

--------------------------------------------------------------------------------
{ Это простой пример, определяющий массив указателей на функции }

interface

type

{ определяем Procs как функцию }
Procs = function(var ProcNum : LongInt): LongInt;

var

{ объявляем массив указателей на функции }
ProcTable : Array [1..5] of Procs;

{ определения интерфейсов функций }
function Proc1(var MyVal : LongInt) : LongInt; far;
function Proc2(var MyVal : LongInt) : LongInt; far;
function Proc3(var MyVal : LongInt) : LongInt; far;
function Proc4(var MyVal : LongInt) : LongInt; far;
function Proc5(var MyVal : LongInt) : LongInt; far;


implementation

uses Dialogs;

function Proc1(var MyVal : LongInt) : LongInt;
begin

MessageDlg('Процедура 1', mtInformation, [mbOK], 0);
Proc1 := 6;
end;

function Proc2(var MyVal : LongInt) : LongInt;
begin

MessageDlg('Процедура 2', mtInformation, [mbOK], 0);
Proc2 := 3;
end;

function Proc3(var MyVal : LongInt) : LongInt;
begin

MessageDlg('Процедура 3', mtInformation, [mbOK], 0);
Proc3 := 4;
end;

function Proc4(var MyVal : LongInt) : LongInt;
begin

MessageDlg('Процедура 4', mtInformation, [mbOK], 0);
Proc4 := 5;
end;

function Proc5(var MyVal : LongInt) : LongInt;
begin

MessageDlg('Процедура 5', mtInformation, [mbOK], 0);
Proc5 := 1;
end;

initialization


{ инициализируем содержание массива указателей на функции }
@ProcTable[1] := @Proc1;
@ProcTable[2] := @Proc2;
@ProcTable[3] := @Proc3;
@ProcTable[4] := @Proc4;
@ProcTable[5] := @Proc5;

end.

Я думаю это можно сделать приблизительно так: объявите в каждой форме процедуры, обрабатывающие нажатие кнопки, типа процедуры CutButtonPressed(Sender:TObject) of Object; затем просто назначьте события кнопок OnClick этим процедурам при наступлении событий форм OnActivate. Этот способ соответствует концепции ОО-программирования, но если вам не нравится это, то вы все еще можете воспользоваться указателями функций, которая предоставляет Delphi.

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

Пример: (Здесь может встретиться пара синтаксических ошибок - я не компилил это)

--------------------------------------------------------------------------------
type

TBaseForm = class(TForm)
public
procedure Method1; virtual; abstract;
end;

type

TDerivedForm1= class(TBaseForm)
public
procedure Method1; override;
end;


TDerivedForm2= class(TBaseForm)
public
procedure Method1; override;
end;


procedure TDerivedForm1.Method1;
begin
....
end;


procedure TDerivedForm2.Method1;
begin
....
end;

{Для вызова функции из вашего toolbar, получите активную в настоящий момент форму и вызовите Method1}
procedure OnButtonClick;
var

AForm: TBaseForm;
begin

AForm := ActiveForm as TBaseForm;
AForm.Method1;
end

 

Zaluskiy Anton(COOLer)  и Khrapunov Kirill(Pixel)  - ведущие проекта    "Мир Delphi" (C) Pixelsoftware(Pixel)& Delphi 2000-2002(COOLer)


Озон! TopList SpyLOG RLE Banner Network
http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу
Рейтингуется SpyLog

 

Another Banner Network



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное