Avatar billede forcedesigner Nybegynder
22. april 2002 - 22:00 Der er 18 kommentarer og
1 løsning

Luk problem!!!

Jeg har efterlinet denne editor: http://www.udvikleren.dk/artikler/delphitekstsource.zip

Men hvorfor kan den ikke lukke når man trykker på (X Luk  alt+f4).

Jeg har også brug for en kode der kan lukke en vindue.
Avatar billede hermandsen Juniormester
22. april 2002 - 23:52 #1
Hvad er det lige du mener? Hvilket vindue skal lukkes? Kunne du ikke eventuelt komme med noget eksempelkode? At du har efterlignet den fil, betyder vel ikke at du har hugget alt koden!
Avatar billede forcedesigner Nybegynder
23. april 2002 - 11:07 #2
Nej, nej, nej

Det er en Artikel, som du kan læse her fra: http://www.udvikleren.dk/vis_artikel.php4?id=10

Artiklen lære en hvordan man laver en simpel teksteditor i delphi, efter man har læse artiklen og har prøvet at lave editoren, kommer den til at se sådan ud: http://www.udvikleren.dk/artikler/delphitekstsource.zip

Prøv at downloade editoren og kig på .exe filen.

Spørgsmål 1:

Editoren kan åbne mange vinduer men hvorfor kan man ikke lukke hver enkelte af dem???

Spørgsmål 2:

Hvis nu jeg hade en knap på min toolbar, som kunne lukke en vindue adgangen, hvordan skulle koden i knappen se ud????.

Håber at i kan hjælpe mig.
Avatar billede benson Nybegynder
23. april 2002 - 11:42 #3
TMDI(ActiveMDIChild).close ?

eller

child.close i TMDI ?

Det må da være den `?
Avatar billede forcedesigner Nybegynder
23. april 2002 - 11:44 #4
Virker ik'
Avatar billede forcedesigner Nybegynder
23. april 2002 - 11:48 #5
De bliver bar minimeret.
Avatar billede benson Nybegynder
23. april 2002 - 12:03 #6
Prøv lige at indsætte denne i Childformens onclose event:

procedure TMDIChild.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

Husk at tilføje

procedure FormClose(Sender: TObject; var Action: TCloseAction);

i FORMens definition lige efter at

Memo feltet blive defineret !
Avatar billede forcedesigner Nybegynder
23. april 2002 - 12:14 #7
Virker stadig ik'.

Kan du ikke downloade denne her: http://www.udvikleren.dk/artikler/delphitekstsource.zip

Også lave luk funktionen.

Og send den på min e-mail: madka@hjem.as

Send det hele ikke kun exe filen.
Avatar billede benson Nybegynder
23. april 2002 - 12:17 #8
Jamen Jeg har downloadet eksemplet. Problemet er bare at min delphi 4 påstår der er en fejl i form definitionsfilerne, og jeg kan derfor ikke køre compile et nyt program.

Men ovenstående idé fik jeg ved at se Delphis eget forslag til hvordan det gøres.

File | new -> Projects
Avatar billede benson Nybegynder
23. april 2002 - 12:21 #9
Hvilket er et bedre program...... syntes jeg !!
Avatar billede forcedesigner Nybegynder
23. april 2002 - 12:25 #10
ok
Avatar billede doc404 Novice
23. april 2002 - 13:28 #11
benson's svare er rigtig nok...

Du skal ind i unit2 i kodeeksemplet og tilføje benson's kode til MDI formens OnClose event

Og for at lukke den aktive MDI form via en knap så lav dette

procedure TForm1.ToolButton8Click(Sender: TObject);
begin
  if Form1.ActiveMDIChild <> nil then
    Form1.ActiveMDIChild.Close
  else
    ShowMEssage('Fjols - det er jo ikke flere vinduer at lukke');
end;
Avatar billede forcedesigner Nybegynder
23. april 2002 - 17:39 #12
Virker stadig ikke
Avatar billede hermandsen Juniormester
23. april 2002 - 18:06 #13
Jeg har lavet et tidligere program på næsten samme måde... Måske det kan være til hjælp:

Først kommer din main form:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, ComCtrls, ToolWin;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    ToolBar1: TToolBar;
    StatusBar1: TStatusBar;
    OpenDialog1: TOpenDialog;
    Fil1: TMenuItem;
    bn1: TMenuItem;
    Ny1: TMenuItem;
    N1: TMenuItem;
    Luk1: TMenuItem;
    Rediger1: TMenuItem;
    Vindue1: TMenuItem;
    Hjlp1: TMenuItem;
    Minimeralle1: TMenuItem;
    Maksimeralle1: TMenuItem;
    Normaliseralle1: TMenuItem;
    Lukalle1: TMenuItem;
    N2: TMenuItem;
    Overlappet1: TMenuItem;
    Sidevedside1: TMenuItem;
    Arrangerikoner1: TMenuItem;
    SaveDialog1: TSaveDialog;
    procedure Luk1Click(Sender: TObject);
    procedure bn1Click(Sender: TObject);
    procedure Ny1Click(Sender: TObject);
    procedure Minimeralle1Click(Sender: TObject);
    procedure Normaliseralle1Click(Sender: TObject);
    procedure Maksimeralle1Click(Sender: TObject);
    procedure Lukalle1Click(Sender: TObject);
    procedure Overlappet1Click(Sender: TObject);
    procedure Sidevedside1Click(Sender: TObject);
    procedure Arrangerikoner1Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.DFM}

procedure TForm1.Luk1Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.bn1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    Form2 := TForm2.Create(Self);
    Form2.Caption := OpenDialog1.FileName;
    Form2.RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
  end;
end;

procedure TForm1.Ny1Click(Sender: TObject);
begin
  Form2 := TForm2.Create(Self);
  Form2.Caption := 'Unavngivet dokument';
  Form2.RichEdit1.Lines.Clear;
end;

procedure TForm1.Minimeralle1Click(Sender: TObject);
var
  I: Integer;
begin
  for i := Form1.MDIChildCount-1 downto 0 do
    Form1.MDIChildren[I].WindowState := wsMinimized;
end;

procedure TForm1.Normaliseralle1Click(Sender: TObject);
var
  I: Integer;
begin
  for i := Form1.MDIChildCount-1 downto 0 do
    Form1.MDIChildren[I].WindowState := wsNormal;
end;

procedure TForm1.Maksimeralle1Click(Sender: TObject);
var
  I: Integer;
begin
  for i := Form1.MDIChildCount-1 downto 0 do
    Form1.MDIChildren[I].WindowState := wsMaximized;
end;

procedure TForm1.Lukalle1Click(Sender: TObject);
var
  I: Integer;
begin
  for i := Form1.MDIChildCount-1 downto 0 do
    Form1.MDIChildren[I].Close;
end;

procedure TForm1.Overlappet1Click(Sender: TObject);
begin
  Cascade;
end;

procedure TForm1.Sidevedside1Click(Sender: TObject);
begin
  Tile;
end;

procedure TForm1.Arrangerikoner1Click(Sender: TObject);
begin
  ArrangeIcons;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if MessageDlg('Gem fil?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
  begin
    if Form2.Caption = 'Unavngivet dokument' then
      SaveDialog1.FileName := ''
    else
      SaveDialog1.FileName := Form2.Caption;
    if SaveDialog1.Execute then
      Form2.RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);
  end;
end;

end.


Her efter Child'et!


unit Unit2;

interface

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

type
  TForm2 = class(TForm)
    RichEdit1: TRichEdit;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.DFM}

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

end.

Måske det kunne være til en hjælp!

//hermandsen
Avatar billede hermandsen Juniormester
23. april 2002 - 18:07 #14
Husk lige at fjerne Form2 under Auto-create forms! ;)
Avatar billede forcedesigner Nybegynder
23. april 2002 - 22:42 #15
Jeg kan ikke få det til at virke!

Prøv at gå ind på: http://www.udvikleren.dk/vis_artikel.php4?id=10

lav den simple editor med luk. Jeg vil give 15 point ekstre.
Avatar billede doc404 Novice
23. april 2002 - 23:00 #16
jeg downloaded det eksempel du have og tilføjede koden i mit tidligere svar og det virkede..

Hvad er det der ikke virker hos dig?
Avatar billede doc404 Novice
23. april 2002 - 23:06 #17
Giv mig en email, så skal jeg sende koden til dig
Avatar billede forcedesigner Nybegynder
23. april 2002 - 23:09 #18
madka@hjem.as du er meget velkommen til sende mig det.
Avatar billede forcedesigner Nybegynder
24. april 2002 - 13:52 #19
1000 gang TAK, doc404

Det virker perfekt!
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