Пятница, 13 Декабря 2019, 19:36

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Учю программировать на языке Паскаль(Delphi7,6, FreePascal) (Все интерпритации языка, мелкие уроки програмера)
Учю программировать на языке Паскаль(Delphi7,6, FreePascal)
IneigoДата: Пятница, 04 Декабря 2009, 02:48 | Сообщение # 21
был не раз
Сейчас нет на сайте
Вот назрел вопрос по делфи 7. Создал простенькую форму, пытаюсь её сохранить(для помещения в хранилище) а он мне выдаёт :
"OBJECT expected on line 1." Что я сделал не так или может пропустил чего?


Нет ничего такого, чего ты не познал. Ты уже знаешь всё и в жизни идёт лишь повторение))
AkyltistДата: Пятница, 04 Декабря 2009, 03:05 | Сообщение # 22
заслуженный участник
Сейчас нет на сайте
Quote
(для помещения в хранилище)

Куда? в ресурсы чтоли?

Да и код желательно бы, и конкретные цели, что сохранить какие параметры, какой объем данных, с чем вместе и тд:

Code
var f: TFileStream;
begin
   f := TFileStream.Create('c:\stream.vcl', fmcreate);
   f.WriteComponent(lb);
   f.Free;
end;

...

var
   f: TFileStream;
begin
   f := TFileStream.Create('c:\stream.vcl', fmOpenRead);
   f.ReadComponent(lvFiles);
   f.Free;

Если для компонента отдельно то вот так, иначе создаем массив компонентов и пишем в поток. В общем способов много, зависит от цели и объема параметров.

IneigoДата: Пятница, 04 Декабря 2009, 11:26 | Сообщение # 23
был не раз
Сейчас нет на сайте
Я создал форму и хочу, что бы в любой момент, как только мне понадобится, добавить её в свою программу. А то и заменить ей стандартную пустую форму тость чтобы по нажатии команды File > New > Application Создавался новёй модль(или что там создаётся) с моей формой, той которую сделал
Code
unit Unit1;

interface

uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, Buttons, ExtCtrls;

type
   TfmExample = class(TForm)
     Panel1: TPanel;
     bbRun: TBitBtn;
     bbClose: TBitBtn;
     edInput: TEdit;
     lbOutput: TLabel;
     mmOutput: TMemo;
   private
     { Private declarations }
   public
     { Public declarations }
   end;

var
   fmExample: TfmExample;

implementation

{$R *.dfm}

end.

Этот код нужен?


Нет ничего такого, чего ты не познал. Ты уже знаешь всё и в жизни идёт лишь повторение))
karuyДата: Пятница, 04 Декабря 2009, 13:33 | Сообщение # 24
заслуженный участник
Сейчас нет на сайте
Ну так сохрани её и открывай в любой момент. Ето сложно?
IneigoДата: Пятница, 04 Декабря 2009, 13:40 | Сообщение # 25
был не раз
Сейчас нет на сайте
Так же назрел вопрос, мне надо чтобы при запуске моей маленькой программки автоматически передавался фокус ввода на поле ввода (компонент Edit вкладки Standart) я открываю свойства формы там вкладка Events и в параметр OnActivate пишу edInput.SetFocus - где еdInput имя этого поля. И у меня ничего не получается, вылетает ошибка:
"'edInput.SetFocus' is not a valid identifier" - что я делаю не так?

Добавлено (04.12.2009, 13:40)
---------------------------------------------

Quote (karuy)
Ну так сохрани её и открывай в любой момент. Ето сложно?

Не я хочу что бы она автоматически добавлялась в каждый новый проект, то есть было в хранилище а не где-то на компе


Нет ничего такого, чего ты не познал. Ты уже знаешь всё и в жизни идёт лишь повторение))
simtikoДата: Пятница, 04 Декабря 2009, 13:54 | Сообщение # 26
почти ветеран
Сейчас нет на сайте
Ineigo, Ты не поверишь! Да он нужен.
IneigoДата: Пятница, 04 Декабря 2009, 13:59 | Сообщение # 27
был не раз
Сейчас нет на сайте
Quote (simtiko)
Ineigo, Ты не поверишь! Да он нужен.

Не понял кто или что нужно?


Нет ничего такого, чего ты не познал. Ты уже знаешь всё и в жизни идёт лишь повторение))
karuyДата: Пятница, 04 Декабря 2009, 14:12 | Сообщение # 28
заслуженный участник
Сейчас нет на сайте
Формы можно хранить в длл-ках:
//-------------------------------
Текст DLL

library DLLWithForm;
uses
SysUtils,
Classes,
DLLFormU in 'DLLFormU.pas' {DLLForm};
{$R *.RES}
exports
ShowModalForm,ShowForm;
begin
end.
//----------------------------
Текст формы в DLL

unit DLLFormU;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, Buttons;

type
TDLLForm = class(TForm)
BitBtnl: TBitBtn;
private
{ Private declarations }
public
{ Public declarations }
end;

// Объявление экспортируемых подпрограмм
function ShowModalForm: Integer;
procedure ShowForm(aHandle: THandle);

var
DLLForm: TDLLForm;

implementation
{$R *.DFM}

// Модальный вызов
function ShowModalForm: Integer;
begin
DllForm := TDllForm.Create(Application);
Result := DLLForm.ShowModal;
DLLForm.Free;
end;

// Немодальный вызов
procedure ShowForm(Appl, Form: THandle);
begin
Application.Handle := Appl; // Замена объекта
Application.DllForm := TDllForm.Create(Application);
DLLForm.Show
end;

end.
//----------------------------------
Текст вызывающей программы

unit TestMainU;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;

type
TTestMain = class(TForm)
Buttoni: TButton; // Открыть в модальном режиме
Button2: TButton; // Открыть в немодальном режиме
label I: TLabel;

procedure ButtonlClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
TestMain: TTestMain;

implementation
{$R *.DFM}

function ShowModalForm: Integer;
external 'DLLWithForm';

procedure ShowForm(Appl, Form: THandle);
external ' DLLWithForm';

// Модальный вызов
procedure TTestMain.ButtonlClick(Sender: TObject);
begin
label1.Caption := 'ModalResult = ' + IntToStr(ShowModalForm);
label1.Show; // Показываем результат вызова
end;

// Немодальный вызов
procedure TTestMain.Button2Click(Sender: TObject);
begin
Buttoni.Enabled := = False;
Button2.Enabled := False;
label1.Hide;
ShowForm(Application.Handle, Self.Handle);
end;

end.

Programmer_BДата: Пятница, 04 Декабря 2009, 14:13 | Сообщение # 29
почетный гость
Сейчас нет на сайте
Quote (Ineigo)
Так же назрел вопрос, мне надо чтобы при запуске моей маленькой программки автоматически передавался фокус ввода на поле ввода (компонент Edit вкладки Standart) я открываю свойства формы там вкладка Events и в параметр OnActivate пишу edInput.SetFocus - где еdInput имя этого поля. И у меня ничего не получается, вылетает ошибка:
"'edInput.SetFocus' is not a valid identifier" - что я делаю не так?

В событии OnCreate главной формы пиши Self.edInput.SetFocus

AkyltistДата: Пятница, 04 Декабря 2009, 14:15 | Сообщение # 30
заслуженный участник
Сейчас нет на сайте
SetFocus(HWND);

где HWND - хендел заголовка компонента.

Quote
Не я хочу что бы она автоматически добавлялась в каждый новый проект

директива {$Include Path}
в ней функция загрузки формы.

Code
constructor TForm1.Create(AOwner: TComponent); // override;
var
   fname: string;
begin
   { Для динамически создаваемых контролов, может требоваться
   RegisterClasses(..); }
   fname := FormFilename;
   if FileExists( fname ) then
   begin
     CreateNew(AOwner);
     ReadComponentResFile(fname, Self);
   end
   else
     inherited Create( AOwner );
end;

procedure TForm1.FormCloseQuery( Sender: TObject;
   var CanClose: Boolean);
begin
   WriteComponentResFile(FormFileName, Self);
end;

ну или:

Прикрепления: save_form_to_fi.zip(9.0 Kb)
IneigoДата: Пятница, 04 Декабря 2009, 14:34 | Сообщение # 31
был не раз
Сейчас нет на сайте
Quote (Programmer_B)
В событии OnCreate главной формы пиши Self.edInput.SetFocus

тоже самое выдаёт((
karuy, Спасибо разобрался)))

Добавлено (04.12.2009, 14:25)
---------------------------------------------
Вот посмотри у мну совсем простая программка и я ни как не сделаю так чтобы при старте edInput в это поле автоматически перемещался курсор((

Добавлено (04.12.2009, 14:27)
---------------------------------------------
Как файлы прикрепить?
У меня не получается(( говорит недоступный формат изображения((

Добавлено (04.12.2009, 14:34)
---------------------------------------------
Akyltist, Я недавно начал изучать программирование Делфи(да и в принципе программирование), можно попросить пояснить, я не понял.


Нет ничего такого, чего ты не познал. Ты уже знаешь всё и в жизни идёт лишь повторение))

Сообщение отредактировал Ineigo - Пятница, 04 Декабря 2009, 14:36
AkyltistДата: Пятница, 04 Декабря 2009, 15:20 | Сообщение # 32
заслуженный участник
Сейчас нет на сайте
Quote
можно попросить пояснить, я не понял.

конечно можно, но сегодня не могу, очень ограничен во времени.
simtikoДата: Пятница, 04 Декабря 2009, 15:21 | Сообщение # 33
почти ветеран
Сейчас нет на сайте
Quote (Ineigo)

Не понял кто или что нужно?

http://gcup.ru/forum/63-326-44616-16-1259915204

IneigoДата: Пятница, 04 Декабря 2009, 15:52 | Сообщение # 34
был не раз
Сейчас нет на сайте
simtiko, ))
Akyltist, Спасибо.

Добавлено (04.12.2009, 15:52)
---------------------------------------------
Понял, что я сделал не так))) Самому аж смешно))
В общем я добавил такой код:

Code
procedure TfmExample.FormActivate(Sender: TObject);
begin
edInput.SetFocus;
end;

А затем в Объект Инспекторе во вкладке Events и в параметр OnActivate пишу FormActivate
Так всё просто отлично работает))


Нет ничего такого, чего ты не познал. Ты уже знаешь всё и в жизни идёт лишь повторение))
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Учю программировать на языке Паскаль(Delphi7,6, FreePascal) (Все интерпритации языка, мелкие уроки програмера)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Все права сохранены. GcUp.ru © 2008-2019 Рейтинг