Avatar billede hatecaps Nybegynder
26. marts 2002 - 10:35 Der er 15 kommentarer og
1 løsning

Min egen TForm som standard

Hejsa,

jeg har et brændende ønske om at lave min egen udgave af TForm, tilføje events, properties og methods, for derefter at få Delphi (5,6) til at bruge min udgave af TForm som standard. Dette vil jeg helst opnå UDEN at overskrive (eller rette i) forms.pas så jeg kan bruge den alm. TForm nogle gange.

Når jeg skaber et nyt komponent på basis af TCustomForm kommer komponentet op på paletten, og det var jo egentlig ikke meningen. Altså - en lille opskrift (skridt for skridt) hvordan jeg bærer med ad med det :-)

ha' det godt
hatecaps
Avatar billede borrisholt Novice
26. marts 2002 - 10:37 #1
Det er da ikke så svært .... Du skriver blot en ny form, og så lader du være med at inkludere forms.pas
Avatar billede hatecaps Nybegynder
26. marts 2002 - 10:39 #2
jeg ville jo egentlig opnå at når jeg starter en ny applikation (eller vælger "ny form") så skulle delphi bruge min og ikke den alm.
Avatar billede hatecaps Nybegynder
26. marts 2002 - 10:40 #3
i øvrigt vil det være noget tåbeligt IKKE at inkludere forms, ellers kan man jo ikke længere bruge application mere, eller man skal til selv at lave en egen udgave af den også
Avatar billede borrisholt Novice
26. marts 2002 - 10:40 #4
så er du nød til at skrive dit kode i forms.pas
Avatar billede cms Nybegynder
26. marts 2002 - 10:45 #5
Og forms.pas skal så lægges i dit lib-bibliotek, for ellers bliver den ikke kompileret. Du kan selv prøve at lave en syntaksfejl i forms.pas og kompilere et project der har forms i sin uses. Der vil ikke opstå en fejl.
Dernæst skal du rebuilde vcl50.bpl osv. osv.
Avatar billede hatecaps Nybegynder
26. marts 2002 - 10:46 #6
hmm, jeg skrev vist at det ville jeg helst undgå... jeg lader spørgsmålet stå lidt..
Avatar billede borrisholt Novice
26. marts 2002 - 10:53 #7
orv ja den der "New Application" ting den kan du da bare lave om i !

Jens B
Avatar billede martinlind Nybegynder
26. marts 2002 - 10:54 #8
Du laver dit eget CustomModule som du kan se beskrevet her :

http://www.gexperts.org/opentools/

et stykke nede på siden

/Martin
Avatar billede martinlind Nybegynder
26. marts 2002 - 10:55 #9
How can I add published properties to a TForm descendent?

Add published properties to a regular TForm

Add the form to the Object Repository (Project menu)

Add the form to an existing design time package (such as Borland User Components) or to a new design-time package.

Add DsgnIntf/DesignIntf to the implementation uses clause of some unit in the package, and add a register procedure as follows:
procedure Register;
begin
  RegisterCustomModule(TMyForm, TCustomModule);
end;

Finally, inherit from your form in the repository inside a project and the new published properties will show up.
There is also a much more complex method involving writing a module creation expert, a repository expert, and using CreateModuleEx and different streams, but is much more error-prone and for most people, has no distinct advantages.

Note that the IDE won't allow you to add both published properties and components to a custom module at the same time. The workaround is to create a form with your custom properties in a package, and then have a descendent form in the repository which adds the components you want there by default.
Avatar billede hatecaps Nybegynder
26. marts 2002 - 11:25 #10
cms, har du en lille opskrift på hvordan jeg implemeterer ændringer lavet i den forms.pas der ligger i source\vcl ?
Avatar billede martinlind Nybegynder
26. marts 2002 - 11:53 #11
hatecaps >> hvorfor vil du ikke lave det på den rigtige måde, hvis du ligger og roder i din forms.pas roder du dig ud i noget snavs, hvad så næste gang der kommer en opd. osv., Den rigtige måde er noget smartere.
Avatar billede hatecaps Nybegynder
26. marts 2002 - 12:37 #12
martin >> fordi jeg har lavet en event der burde være med i TForm under alle omstændigheder. Som det er nu har jeg en form i repository med event som property, men den kommer pine død ikke op i listen over events. Derfor er man nødt til at sige minform.minevent := (en procedure man så skal definere manuelt) og det burde ikke være sådan.

Måske finder jeg ud af at lave den form i repository så det virker, det ville selvfølgelig gi' lidt emre frihed.
Avatar billede hatecaps Nybegynder
26. marts 2002 - 12:51 #13
Måske kan i hjælpe mig med denne her:

unit MinFormU;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TMinForm = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    Fonbuh : tnotifyevent;
  public
    { Public declarations }
  published
    property OnBuh : Tnotifyevent read fonbuh write fonbuh;
  end;

var
  MinForm: TMinForm;

implementation

{$R *.DFM}

procedure TMinForm.FormCreate(Sender : TObject);
begin
  if assigned(fonbuh) then
  begin
    fonbuh(sender);
  end;
end;

end.


Denne form er gemt i repository, men når jeg vælger at arve fra den kommer OnBuh ikke med i listen over events for formen, og det er sådan set DET jeg er ude efter.
Avatar billede martinlind Nybegynder
26. marts 2002 - 12:59 #14
Hvis du gør som jeg skrev, så funker det som du gerne vil ha' det, det er ret nemt hvis du lige læser de 10 liner med opskriften, og jeg har testet i D5/6

/Martin
Avatar billede hatecaps Nybegynder
26. marts 2002 - 13:27 #15
grrr, jeg tror gerne du har fået det til at virke, men ikke om jeg kan få den skide event til at stå i listen. !!

I den opskrift du gav mangler der en indikering af hvornår man skal gemme/kompile pakker og forms. Måske er det der jeg gør noget forkert.
Avatar billede martinlind Nybegynder
26. marts 2002 - 13:31 #16
Du skal compilere og installere den runtime package du har lagt din nyeform i

/Martin
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester