|
Тема
|
Проблем
|
|
Автор | Phill (Нерегистриран) |
Публикувано | 01.03.02 22:29 |
|
Здравейте,
Пиша един компонент сега(по-точно преправям един делфийски, а пиша на c++ под c++ Builder) и се нуждая от метод, в който компонента да покаже един модален диалог. Направих си формата под билдера, написах и класа й на паскал в unit-а, намерих как да добавя .dmf файла на формата - {$R име.DFM} и успявам да компилирам компонента без проблеми вече (под c++builder). Но проблема е , че когато инициализирам формата (с Create (Application.MainForm) )в някой метод на компонента ( независимо дали в неговия Create или в друг) ми дава грешка - access violation at .... address in module ... read of address 00000000. Как да се справя с това? Не смятам, че проблема е от това , че не съм с Делфи, ами нещо което изпускам. Не съм чел книги за Делфи, нито за правене на компоненти. Проблемът може да се обобщи до това как да се направи компонент с форма в себе си (принадлежаща на него).
Предварително ви благодаря!
| |
|
Otnosno CBuilder-a ne moga da sam ti ot polza
Daj powe4e info za componenta - kakwo parawi i kak to4no go prawi
Zna4i - nesto osnowno - izobraziawaneto na ekrana na formi ne e thread safe proces - towa e edno - ako componenta ti raboti w otdelen thread - niama da stane
Drugo - Create - a ne e podhodiast wabste za sazdawane na formi - t.e. - wiz dali waboste Application - <>NIL - t.e. Create-a moze da nastapwa predi inicializaciata na programata - wsi4ko e mnogo uslowno - zawisi kakwo iskash da postignesh - taka 4e malko info ili par4e ot source moze da pomogne.
Mozesh da testwash komponenta si bez da go dobawiash kato biblioteka w CBuildera - a kato go creatwash dinami4no - taka mozesh da trasirash i da ustanowish kade to5no garmi i za kakwo - wremenno si wklu4i path-a do surce-a na komponenta (ako ne e vidim w testowia proekt) za da mozesh da imash dostap do nego - nezawisimo 4e ti prekompilira bibliotekata postoianno. I waobste testwaneto na komponenti go prawi bez da gi zaka4ash w IDE- to - towa e naj sigurnia na4in.
---
Е т'ва е живот!
| |
Тема
|
Re: Проблем
[re: PhantomAS]
|
|
Автор | Phill (Нерегистриран) |
Публикувано | 02.03.02 18:19 |
|
ето малко код ...
type
{$R openform.DFM}
TOpenForm = class (TForm)
//дори и гола форма не ще да тръгне
end;
TStringAlignGrid = class(TStringGrid)
.......
OpenForm:TOpenForm;
. .........
procedure OpenFile(FileName:String);
.........
end;
implementation
constructor TStringAlignGrid.Create (AOwner:TComponent);
begin
inherited Create(AOwner);
OpenForm.Create(AOwner);
end;
или пък я create-вам в някой метод,където вече е сигурно, че Аpplication не е NIL(поне се надявам :) ).
procedure TStringAlingGrid.OpenFile (FileName:String);
begin
OpenForm.Create(Application.MainForm);
end;
и така. тва е. Дано знаете какво да направя. Също бих искал да ми кажете някаква хубава книга, която мога да си намеря и тя да е за компоненти . може и за Делфи, дори и да е на английски. Хайде до скоро.
| |
Тема
|
Re: Проблем
[re: Phill]
|
|
Автор |
TRN (член) |
Публикувано | 02.03.02 23:12 |
|
Не знам дали ще работи за компонента. Aз го ползвам за създаване на форми в програмите си и работи.
With TFormName.Create(Application) do
try
......
finally
Free;
end;
| |
Тема
|
Re: Проблем
[re: Phill]
|
|
Автор | 1OO (Нерегистриран) |
Публикувано | 03.03.02 06:11 |
|
Mai trqbwa da e taka: OpenForm:=TOpenForm.Create(Owner); ,a ne OpenForm.Create(Owner);
Towa e link kum statiq, malko e starichka ama to principite sa si sustite!
Wig i helpa na Delphi-to.
| |
|
Kam towa koeto kazaha drugite dobawiam samo edno - neobhodimo li e wsi4ko da e w edin file - niama smisal - po dobre si izwadi formata w otdelen file- niama da ti pre4i (predpolagam) - togawa niama da pishesh na raka resursite !
A wsastnost kade ti dawa AV -to pri Create ili pri izwikwane na samata forma ?
Kolkoto za kniga - specialno za sazdawane na komponenti ima edna (koiato az znam) ama e mnogo stara - Creating Delphi 3 Components ili nesto podobno - maj ne e mnogo goliama - moga da ti ia pratia po postata
Ina4e waw powe4eto "golemi" knigi ima dial za razrabotka na komponenti - towa e.
---
Е т'ва е живот!
| |
|
Ne vizdam logikata nesto napraveno na Delphi da go prehvyrljash na C++?!? Obratnoto mi se e sluchvalo i na men. A ako ste pravish modalen prozorec , ami napravi si go na C++, sto ti trjabva da razvaljash koda na Delphi?
| |
Тема
|
kniga
[re: Phill]
|
|
Автор |
Bятъp (зaпaдeн) |
Публикувано | 04.03.02 12:29 |
|
Тази не е лоша:
Мартин Гардън
Delphi Създаване на компоненти
Martin Garden
Delphi in Components
Видях да язди през реки, те седем са на брой...
| |
|
|
|
|