Avatar billede kennethjohnsen Nybegynder
09. oktober 2007 - 13:12 Der er 6 kommentarer og
1 løsning

Dynamisk tilføjelse af komponenter + COM interface

Jeg har lavet et program, der læser en mappe på disken, og for hver fil den finder, genererer en knap.
Når man trykker på knappen, åbner programmet den tilhørende fil, udskriver den, og lukker filen igen.

Det er lavet i C#, hvor det er nemt at tilføje knapper til en form, dynamisk.

Åbning af filerne (word-filer) foregår vha. COM/OLE.

Nu er problemet bare at der ikke er .NET på de maskiner der skal køre det, og heller ikke kommer det!

Jeg har overvejet andre sprog, men:

- Java: Kan ikke snakke med Word via COM/OLE.
- Smalltalk: Ikke muligt at tilføje knapper dynamisk (ikke i Visual Works, ihvertfald).
- PowerBuilder: Samme problem som Smalltalk.
- C++/MFC: Samme problem som Smalltalk.

Jeg er altså på jagt efter et programmeringssprog hvor man dynamisk kan opbygge sine vinduer/forms, og samtidigt kan kommunikere med Word via OLE/COM eller lignende.

Nogle forslag?
Avatar billede roenving Novice
10. oktober 2007 - 15:10 #1
Kan du ikke få en plugin til Java, der kan det, du ønsker ?-)
Avatar billede kennethjohnsen Nybegynder
10. oktober 2007 - 18:18 #2
Jo. Det er nok det bedste bud indtil videre.
Der er JCom og JACOB, som skulle være i stand til det.
Men har begge dårlig (læs: ingen) dokumentation.

Jeg har en forestilling om at der et eller andet sted derude findes et udviklingsmiljø, der nemt kan snakke med COM/OLE, og hvor man programmatisk kan lave forms, samtidigt med at det ikke kræver en runtime (eller ihvertfald ikke en runtime der skal installeres).

Måske RealBasic, som efter jeg kan læse, kan kompileres til Win, Mac og Linux, hvilket vil sige at det nok ikke bruger en runtime?

Men jeg smider ikke 150$ før jeg ved om det kan det.
Avatar billede pidgeot Nybegynder
10. oktober 2007 - 18:32 #3
Du kan evt. tage et kig på Borland/Codegear's Delphi. Sproget er nemt at gå til (Pascal), og der er en gratis udgave i form af Turbo Delphi Explorer så du kan afprøve det - jeg tror faktisk du kan lave hele programmet med den udgave, ud fra Feature Matrix'et.

http://www.turboexplorer.com/delphi
Avatar billede kennethjohnsen Nybegynder
11. oktober 2007 - 08:54 #4
Jeg har kigget på det, men jeg mener at have set et eller andet i hjælpen hvor der står at komponenter kun kan oprettes på stakken, og ikke heap'en.
Det tolker jeg som at man ikke kan tilføje komponenter til en form, dynamisk.
Men jeg tager lige et ekstra kig.
Avatar billede pidgeot Nybegynder
11. oktober 2007 - 09:59 #5
Du kan sagtens tilføje dem dynamisk - bare opret en instans af knap-klassen, og tildel de relevante properties (særligt Parent) - nå ja, og så naturligvis gemme den et sted du kan få fat på den igen.

Det skulle jeg i øvrigt også mene man kan i de sprog du allerede har nævnt - det er mig bekendt sådan de fleste GUI builders fungerer - men nu arbejder jeg ikke selv med dem, så jeg kan ikke sige om der er særlige ting man skal gøre.
Avatar billede kennethjohnsen Nybegynder
11. oktober 2007 - 15:12 #6
Jeg har lige taget et ekstra kig, og jeps:

procedure TForm2.Button1Click(Sender: TObject);
var
  Btn: TButton;
begin
  Btn := TButton.Create(Self);
  Btn.Parent := Self;
end;

Det var lige Parent jeg manglede.

Smid et svar hvis du vil have pointene, for jeg tror du har løst mit problem.

Mht. andre sprog, så er jeg ret sikker på at C++/MFC og PowerBuilder fungerer vha. nogle resource-filer der linkes ind i programmet, og VisualWorks Smalltalk fungerer vha. såkaldte windowspecs, som stort set er det samme.

Men pyt! Turbo Delphi til Win32 kan køre uden runtime, og dens VCL komponenter kan genereres dynamisk, så det er helt perfekt.
Avatar billede pidgeot Nybegynder
11. oktober 2007 - 15:33 #7
Nu skal jeg ikke kunne sige noget om PowerBuilder og Smalltalk, men MFC kan man i hvert fald med - det er dog vist nok lidt mere besværligt, da der vist er noget om at man skal bruge en del WinAPI-kald.

Dog lader det til at være langt nemmere her med Delphi, så du får et svar her. :)
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