Avatar billede ingeman Seniormester
15. juli 2005 - 14:03 Der er 18 kommentarer og
1 løsning

Hvordan anvender man showmessage

For at mit program det wirker skal jeg kalde showmessage(); for at alle dens event bliver kaldt - sådan ser det ud ihvertfald.
Hvordan kalder man showmessage(); eller noget andet som det gør det samme -  uden at man får den bedsked på skærmen - mit program er plalagt til at kører minimeret ?

Mvh
Ingeman
Avatar billede ingeman Seniormester
15. juli 2005 - 14:05 #1
Det må være noget kode som gør det samme som showmessage ud at afleverer det på skærmem.
Avatar billede kroning Nybegynder
15. juli 2005 - 16:33 #2
Jeg forstår ikke spørgsmålet, formålet med showmessage er vel at give besked på skærmen så hvad mener du med kode som gør det samme men uden at vise noget på skærmen, det giver jo ingen mening?
Avatar billede ingeman Seniormester
15. juli 2005 - 16:39 #3
Jeg kører et consolprogram til comporten - for at den wirker skal den have en showmessage() til at afbryde programmet - mit program kører i tray - skal polle en
folder - jeg har ikke brug for en besked på skærmen - jeg mangler kode som gør det samme som showmessage - men uden at vise noget på skærmem.
Avatar billede ingeman Seniormester
15. juli 2005 - 16:40 #4
kan man udføre det samme som showmessage uden det bliver vist på skærmen - samt at programmet kører videre ?
Avatar billede ingeman Seniormester
15. juli 2005 - 16:42 #5
altså køre showmessage hidden ?
Avatar billede kroning Nybegynder
15. juli 2005 - 19:07 #6
Så du vil altså have det sådan at man kan trykke på en knap (f.eks. ESC) for at afbryde programmet?
Hvis det er det så skal du bare kunne på OnKeyDown eller OnKeyPress event´ene.
Avatar billede ingeman Seniormester
16. juli 2005 - 09:47 #7
Det er noget med en messagehandler - som overtager styringen når man kalder shovmessage - den messagehandler skal så foranlede at der ikke kommer noget på skærmen.
Avatar billede ingeman Seniormester
16. juli 2005 - 09:48 #8
eller en form som modtager noget i baggrunden ?
Avatar billede ingeman Seniormester
16. juli 2005 - 09:54 #9
Den fulde kode:

unit formMain;


interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, VaConst, VaTypes, VaClasses, VaComm, ExtCtrls,
  VaSystem;

Type
  TfrmMain = class(TForm)
    VaComm1: TVaComm;
    StatusBar1: TStatusBar;
    Panel1: TPanel;
    EditTransmit: TEdit;
    CheckBoxAddLinefeed: TCheckBox;
    ButtonTransmit: TButton;
    Button1: TButton;
    Panel2: TPanel;
    Panel3: TPanel;
    Memo2: TMemo;
    Panel4: TPanel;
    Memo1: TMemo;
    Splitter1: TSplitter;
    Panel5: TPanel;
    ButtonOpen: TButton;
    ButtonClose: TButton;
    CheckBoxRTS: TCheckBox;
    CheckBoxDTR: TCheckBox;
    CheckBoxBREAK: TCheckBox;
    CheckBoxXON: TCheckBox;
    Panel6: TPanel;
    LabelParity: TLabel;
    ComboParity: TComboBox;
    ComboStopbits: TComboBox;
    LabelStopbits: TLabel;
    LabelDataBits: TLabel;
    ComboDatabits: TComboBox;
    ComboBaudrate: TComboBox;
    LabelBaudrate: TLabel;
    Bevel1: TBevel;
    ButtonReset: TButton;
    Bevel2: TBevel;
    Label1: TLabel;
    ComboPortNum: TComboBox;
    procedure FormCreate(Sender: TObject);
    procedure ButtonOpenClick(Sender: TObject);
    procedure ButtonCloseClick(Sender: TObject);
    procedure ButtonResetClick(Sender: TObject);
    procedure ButtonTransmitClick(Sender: TObject);
    procedure Comm1TxEmpty(Sender: TObject);
    procedure Comm1Break(Sender: TObject);
    procedure Comm1Cts(Sender: TObject);
    procedure Comm1Dsr(Sender: TObject);
    procedure Comm1Error(Sender: TObject; Errors: Integer);
    procedure Comm1Ring(Sender: TObject);
    procedure Comm1Rlsd(Sender: TObject);
    procedure ComboBaudrateChange(Sender: TObject);
    procedure ComboDatabitsChange(Sender: TObject);
    procedure ComboStopbitsChange(Sender: TObject);
    procedure ComboParityChange(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure CheckBoxRTSClick(Sender: TObject);
    procedure CheckBoxDTRClick(Sender: TObject);
    procedure CheckBoxBREAKClick(Sender: TObject);
    procedure CheckBoxXONClick(Sender: TObject);
    procedure VaComm1Open(Sender: TObject);
    procedure VaComm1Close(Sender: TObject);
    procedure ComboPortNumChange(Sender: TObject);
    procedure VaComm1RxChar(Sender: TObject; Count: Integer);
    procedure VaComm1Rx80Full(Sender: TObject);
    procedure VaComm1Event1(Sender: TObject);
    procedure VaComm1Event2(Sender: TObject);
    procedure VaComm1RxFlag(Sender: TObject);
    procedure VaComm1PErr(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    procedure HandleException(Sender: TObject; E: Exception);
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;


procedure OpenPort;

implementation

{$R *.DFM}



procedure TfrmMain.FormCreate(Sender: TObject);
begin
  Application.OnException := HandleException;

  with ComboPortNum do
    ItemIndex := Items.IndexOf('3');
  with ComboBaudrate do
    ItemIndex := Items.IndexOf('br19200');
  with ComboDataBits do
    ItemIndex := Items.IndexOf('db8');
  with ComboParity do
    ItemIndex := Items.IndexOf('paNone');
  with ComboStopbits do
    ItemIndex := Items.IndexOf('sb10');
                                       
  //ComboBaudrate.ItemIndex + 1
  //Make sure we skip the brUser flag in TVaBaudRate

  VaComm1.BaudRate := TVaBaudrate(ComboBaudrate.ItemIndex+1);
  VaComm1.Databits := TVaDataBits(ComboDatabits.ItemIndex);
  VaComm1.Parity := TVaParity(ComboParity.ItemIndex);
  VaComm1.StopBits := TVaStopBits(ComboStopbits.ItemIndex);

end;

procedure TfrmMain.HandleException(Sender: TObject; E: Exception);
begin
  if E is EVaCommError then
    with E as EVaCommError do
      ShowMessage(Message);
end;

procedure TfrmMain.ButtonOpenClick(Sender: TObject);
begin
  VaComm1.Open;
  Comm1Cts(VaComm1);
  Comm1Dsr(VaComm1);
  Comm1Ring(VaComm1);
  Comm1Rlsd(VaComm1);
end;

procedure TfrmMain.ButtonCloseClick(Sender: TObject);
begin
  VaComm1.Close;
  Comm1Cts(VaComm1);
  Comm1Dsr(VaComm1);
  Comm1Ring(VaComm1);
  Comm1Rlsd(VaComm1);
end;

procedure TfrmMain.ButtonResetClick(Sender: TObject);
begin
  Memo1.Lines.Clear;
  Memo2.Lines.Clear;
end;

procedure TfrmMain.ButtonTransmitClick(Sender: TObject);
var
  S: string;
  Ok: Boolean;
  J:integer;
begin

  S :=Chr(11)+EditTransmit.Text;
  for j:=1 to Length(S) do VaComm1.WriteText(Chr(Ord(s[j])));

  if CheckBoxAddLinefeed.Checked then
    S := S + #13#10;


  if not Ok then
    Memo1.Lines.add('Error writing to: ' + Format('Port %d', [VaComm1.PortNum]))
  else Memo1.Lines.add(Format('Writing %d characters', [Length(S)]));
end;

procedure TfrmMain.Comm1TxEmpty(Sender: TObject);
begin
  Memo1.Lines.add('TxEmpty signal detected...');
end;

procedure TfrmMain.Comm1Break(Sender: TObject);
begin
  Memo1.Lines.add('Break signal detected...');
end;

procedure TfrmMain.Comm1Cts(Sender: TObject);
begin
  if VaComm1.CTS then
    StatusBar1.Panels[0].Text := 'CTS'
  else StatusBar1.Panels[0].Text := '';
end;

procedure TfrmMain.Comm1Dsr(Sender: TObject);
begin
  if VaComm1.DSR then
    StatusBar1.Panels[1].Text := 'DSR'
  else StatusBar1.Panels[1].Text := '';
end;

procedure TfrmMain.Comm1Ring(Sender: TObject);
begin
  if VaComm1.Ring then
    StatusBar1.Panels[2].Text := 'RING'
  else StatusBar1.Panels[2].Text := '';
end;

procedure TfrmMain.Comm1Rlsd(Sender: TObject);
begin
  if VaComm1.Rlsd then
    StatusBar1.Panels[3].Text := 'RLSD'
  else StatusBar1.Panels[3].Text := '';
end;

procedure TfrmMain.Comm1Error(Sender: TObject; Errors: Integer);
begin
  if (Errors and CE_BREAK > 0) then Memo1.Lines.add(sCE_BREAK);
  if (Errors and CE_DNS > 0) then Memo1.Lines.add(sCE_DNS);
  if (Errors and CE_FRAME > 0) then Memo1.Lines.add(sCE_FRAME);
  if (Errors and CE_IOE > 0) then Memo1.Lines.add(sCE_IOE);
  if (Errors and CE_MODE > 0) then Memo1.Lines.add(sCE_MODE);
  if (Errors and CE_OOP > 0) then Memo1.Lines.add(sCE_OOP);
  if (Errors and CE_OVERRUN > 0) then Memo1.Lines.add(sCE_OVERRUN);
  if (Errors and CE_PTO > 0) then Memo1.Lines.add(sCE_PTO);
  if (Errors and CE_RXOVER > 0) then Memo1.Lines.add(sCE_RXOVER);
  if (Errors and CE_RXPARITY > 0) then Memo1.Lines.add(sCE_RXPARITY);
  if (Errors and CE_TXFULL > 0) then Memo1.Lines.add(sCE_TXFULL);
end;

procedure TfrmMain.ComboPortNumChange(Sender: TObject);
begin
  try
    VaComm1.PortNum := ComboPortNum.ItemIndex + 1;
  except
    ComboPortNum.ItemIndex := VaComm1.PortNum - 1;
    raise;
  end;
end;

procedure TfrmMain.ComboBaudrateChange(Sender: TObject);
begin
  //ComboBaudrate.ItemIndex + 1
  //Make sure we skip the brUser flag in TVaBaudRate
  VaComm1.BaudRate := TVaBaudrate(ComboBaudrate.ItemIndex + 1);
  Memo1.Lines.add('Baudrate: ' + ComboBaudrate.Text);
end;

procedure TfrmMain.ComboDatabitsChange(Sender: TObject);
begin
  VaComm1.Databits := TVaDataBits(ComboDatabits.ItemIndex);
  Memo1.Lines.add('Databits: ' + ComboDatabits.Text);
end;

procedure TfrmMain.ComboStopbitsChange(Sender: TObject);
begin
  VaComm1.StopBits := TVaStopBits(ComboStopbits.ItemIndex);
  Memo1.Lines.add('StopBits: ' + ComboStopbits.Text);
end;

procedure TfrmMain.ComboParityChange(Sender: TObject);
begin
  VaComm1.Parity := TVaParity(ComboParity.ItemIndex);
  Memo1.Lines.add('Parity: ' + ComboParity.Text);
end;

procedure TfrmMain.Button1Click(Sender: TObject);
begin
  VaComm1.WriteText(Chr(11));
end;

procedure TfrmMain.CheckBoxRTSClick(Sender: TObject);
begin
  VaComm1.SetRTS(CheckBoxRTS.Checked);
end;

procedure TfrmMain.CheckBoxDTRClick(Sender: TObject);
begin
  VaComm1.SetDTR(CheckBoxDTR.Checked);
end;

procedure TfrmMain.CheckBoxBREAKClick(Sender: TObject);
begin
  VaComm1.SetBREAK(CheckBoxBREAK.Checked);
end;

procedure TfrmMain.CheckBoxXONClick(Sender: TObject);
begin
  VaComm1.SetXOn(CheckBoxXON.Checked);
end;

procedure TfrmMain.VaComm1RxChar(Sender: TObject; Count: Integer);
begin
  Memo2.Lines.Text := Memo2.Lines.Text + VaComm1.ReadText;
  Memo1.Lines.add('Reading ' + IntToStr(Count) + ' bytes');
end;

procedure TfrmMain.VaComm1Open(Sender: TObject);
begin
  Memo1.Lines.add('Port open');
end;

procedure TfrmMain.VaComm1Close(Sender: TObject);
begin
  Memo1.Lines.Add('Port closed');
end;

procedure TfrmMain.VaComm1Rx80Full(Sender: TObject);
begin
  Memo1.Lines.Add('Receiver buffer is 80% full.');
end;

procedure TfrmMain.VaComm1Event1(Sender: TObject);
begin
  Memo1.Lines.Add('Provider specific event 1.');
end;

procedure TfrmMain.VaComm1Event2(Sender: TObject);
begin
  Memo1.Lines.Add('Provider specific event 2.');
end;

procedure TfrmMain.VaComm1RxFlag(Sender: TObject);
begin
  Memo1.Lines.Add('RxFlag character received.');
end;

procedure TfrmMain.VaComm1PErr(Sender: TObject);
begin
  Memo1.Lines.Add('Printer error detected.');
end;

procedure TfrmMain.Button2Click(Sender: TObject);
begin
  VaComm1.ResetPortParameters;
end;




procedure OpenPort;
var s,s1:String;
    j:Integer;
begin
  frmMain.VaComm1.Open;
  frmMain.Memo1.Lines.Clear;
  frmMain.Memo2.Lines.Clear;

  frmMain.VaComm1.WriteText(Chr(11)); showmessage('ctrl k');

  S :='chabnr:33039,077777777,1;'+#13+#10;
  for j:=1 to Length(S) do frmMain.VaComm1.WriteText(Chr(Ord(s[j])));

  showmessage(s);

  frmMain.VaComm1.Close;

end;



end.

Programmet kører i tray
Hvis showmessage er indsat i proceduren openport - kalder programmet ikke de forskellige event
Avatar billede doc404 Novice
16. juli 2005 - 10:49 #10
Hvor kalder du OpenPort?
Avatar billede ingeman Seniormester
16. juli 2005 - 10:59 #11
Det kalder jeg fra main unit - som er sat til at kører i tray - med timerfunktion


unit TlfMain;

interface


uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Mystd, Menus, ExtCtrls,FileCtrl,Printers, VaClasses, VaComm;

///////////////////////////////////////////////////////////////////////////////////
//                                                                              //
// Herunder er de constanter, der kan benyttes til at teste om ting skal udføres //
//                                                                              //
///////////////////////////////////////////////////////////////////////////////////





///////////////////////////////////////////////////////////////////////////////////
//                                                                              //
// Slut på constanter for test                                                  //
//                                                                              //
///////////////////////////////////////////////////////////////////////////////////


// rettet til at godtage ændringer gemt i ini fil
Var
      ServerDrev              : String = 'D:';
      ServerScriptDir          : String = 'D:\Server\Data-Telefonanlaeg\AutoDelphi-HH';



type
  TFormFaktServ = class(TForm)
    zTrayIcon1: TzTrayIcon;
    zShowApp1: TzShowApp;
    PopupMenuRight: TPopupMenu;
    Lukprogram1: TMenuItem;
    TimerForTest: TTimer;
    N1: TMenuItem;
    N2: TMenuItem;
    Indstilparamtre1: TMenuItem;
    d1: TMenuItem;
    procedure zTrayIcon1AskEndSession(var DoEnd: Boolean);
    procedure zShowApp1AskEndSession(var DoEnd: Boolean);
    procedure Lukprogram1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure TimerForTestTimer(Sender: TObject);
    procedure Indstilparamtre1Click(Sender: TObject);
    procedure About1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Consolvindue(Sender: TObject);
  end;

  PathName=string[79];


Var
    DirInfo:TSearchRec;
    FindError:Integer;

Var
  // Sæt værdien i denne variable til den ønskede tid mellem hver
  // test (i millisekunder)
  TidMellemTest : Cardinal = 10000;

var
  FormFaktServ: TFormFaktServ;

implementation

{$R *.DFM}

Uses
  TlfInBox,
  TlfAbout,
  Inifiles,
  TlfSplashForm, formMain;

///////////////////////////////////////////////////////////////////////////////////
//                                                                              //
// Herunder er de funktioner der sætter menu-punkter og gemmer i fil/henter      //
//                                                                              //
// Udbygget til at gemme paramtre og hente dem igen                              //
//                                                                              //
///////////////////////////////////////////////////////////////////////////////////

procedure HentAlleSelections;
Var
  Hvor : String;
  Hvad : String;
  Fil  : tIniFile;
Begin
  Hvor:=ExtractFileDir(ParamStr(0));
  Hvad:=ExtractFileName(ParamStr(0));
  While Hvor[Length(Hvor)]='\' Do Hvor:=Copy(Hvor,1,length(Hvor)-1);
  Hvor:=Hvor+'\'+ChangeFileExt(Hvad,'.ini');
  Fil:=TIniFile.Create(Hvor);
  Try
    // Herfra hentes parametre
    ServerDrev          :=Fil.ReadString('Parametre','ServerDrev',ServerDrev);          // benyt oprindelig som deafult
    ServerScriptDir    :=Fil.ReadString('Parametre','ServerScriptDir',ServerScriptDir);            // benyt oprindelig som deafult
  Finally
    Fil.Free;
  End;
End;

procedure GemAlleSelections;
Var
  Hvor : String;
  Hvad : String;
  Fil  : tIniFile;
Begin
  Hvor:=ExtractFileDir(ParamStr(0));
  Hvad:=ExtractFileName(ParamStr(0));
  While Hvor[Length(Hvor)]='\' Do Hvor:=Copy(Hvor,1,length(Hvor)-1);
  Hvor:=Hvor+'\'+ChangeFileExt(Hvad,'.ini');
  Fil:=TIniFile.Create(Hvor);
  Try
    // Herfra gemmes paramtre
    Fil.WriteString('Parametre','ServerDrev',ServerDrev);
    Fil.WriteString('Parametre','ServerScriptDir',ServerScriptDir);
  Finally
    Fil.Free;
  End;
End;

Procedure SetAlleSelections;
Begin
End;




///////////////////////////////////////////////////////////////////////////////////
//                                                                              //
// Slut på gem, hent og sæt funktioner                                          //
//                                                                              //
///////////////////////////////////////////////////////////////////////////////////


Procedure Fejlmeld(fejltekst:String);
// Denne routine kan kaldes med evt. fejlmeddelelser, for at disse kan
// blive vist på skærmen.
Begin
  Application.MessageBox(pChar(fejltekst),'Hesselholt Fisk Eksport A/S',
    MB_OK or MB_ICONWARNING);
End;

Procedure TestRout;
// denne routine kaldes hver gang testene skal udføres. I denne skal du
// lave alle de funktioner du ønsker at udføre.
Begin
  // den følgende linie er bare for at vise at der sker noget.
  // Fjern den i det rígtige program.
  Fejlmeld('Der er udført en test'#13#10'Denne meddelelse kommer'#13#10+
    'kun fordi dette er en test');
End;

procedure TFormFaktServ.zTrayIcon1AskEndSession(var DoEnd: Boolean);
begin
  // Hvis denne sættes til "false" vil programmet nægte at lade
  // Windows lukke ned
  DoEnd:=True;
end;

procedure TFormFaktServ.FormCreate(Sender: TObject);

begin

  // Læs selections
  HentAlleSelections;
  // Sæt alle selctions
  SetAlleSelections;

  // Sørg for at der testes med det ømskede mellemrum
  TimerForTest.Interval:=TidMellemTest;
  // Sørg for at timeren kalder hver gang tiden er gået
  TimerForTest.Enabled:=True;

  SplashForm.FRee;
end;




procedure SendText(Fn: string);
var
  S : string;
  KnStr:Array[1..9] of string;
  FraFil:TextFile;
  Lin,j:Integer;
  Ok:Boolean;

begin

//  FormFaktServ.VaComm1.Open;

//  Ok:=FormFaktServ.VaComm1.WriteText(Chr(11));

//  FormFaktServ.VaComm1.Close;


//  s :='chabnr:33039,099999999,1;'+#13 +#10;
//  for j:=1 to Length(S) do frmMain.VaComm1.WriteText(Chr(Ord(s[j])));
//  s:=frmMain.VaComm1.ReadText;
(*
  AssignFile(FraFil,Fn);
  {$I-} Reset(FraFil); {$I+}
  Lin:=1;
  While Not Eof(FraFil) do
    Begin
      Readln(FraFil,knstr[Lin]);Inc(lin);
    end;//While
  CloseFile(FraFil);
  DeleteFile(Fn);

  Ok:=frmMain.VaComm1.WriteText(Chr(11));

  For Lin:=1 to 9 do
    begin
      s :=knstr[lin]+#13 +#10;
      for j:=1 to Length(S) do frmMain.VaComm1.WriteText(Chr(Ord(s[j])));
      s:=frmMain.VaComm1.ReadText;
    end;
  end;
  *)
 

end;



Function ScpFundet(FromDir,FilExt:PathName;Var Filnavn:String):Boolean;
  Label Stop;
  begin
    ScpFundet:=False;
    FindError:=FindFirst(FromDir+'\*.'+FilExt,faArchive,Dirinfo);
    If FindError<>0 Then Goto Stop;
    Filnavn:=FromDir+'\'+Dirinfo.name;
    ScpFundet:=True;
    Stop:
    FindClose(DirInfo);
  end;


procedure TFormFaktServ.zShowApp1AskEndSession(var DoEnd: Boolean);
begin
  // Hvis denne sættes til "false" vil programmet nægte at lade
  // Windows lukke ned
  DoEnd:=True;
end;

procedure TFormFaktServ.Lukprogram1Click(Sender: TObject);
begin
  // Lukke programmet igen
  Close;
end;



procedure TFormFaktServ.TimerForTestTimer(Sender: TObject);
var Fnavn:string;
begin
  // hertil komme systemet hver gang testen skal udføres. Denne
  // Rourtine vil kalde vores egen testroutine
  // Først sørges der for, at der ikke kan startes en ny test før
  // den første test er udført.
  TimerForTest.Enabled:=False;
  // Dernæst kaldes test routinen

 
  OpenPort;
  If ScpFundet(ServerScriptDir,'scp',Fnavn) Then SendText(Fnavn);



//  TestRout;
  // Og til slut, sørger vi for, at der igen kan kaldes ved næste
  // udløb af tid.

  TimerForTest.Enabled:=True;
end;



procedure TFormFaktServ.Indstilparamtre1Click(Sender: TObject);
var
  FormIndstil: TFormIndstil;
begin
  // her indstilles parametre for programmet
  FormIndstil:=TFormIndstil.Create(Self);
  Try
    With FormIndstil Do begin
      // Her tilføjes de enkelte data til den form hvor indstillingerne udføres
      ComboBox1.ItemIndex:=Ord(ServerDrev[1])-65; // En nem beregning til at finde nummeret på drevet
      Edit1.Text:=ServerScriptDir;
    End;
    If FormIndstil.ShowModal=mrOK Then Begin
      // bruger klikkede på OK, så vi skal bruge de nye oplysninger
      With FormIndstil Do Begin
        // Her flyttes data tilbage efter rettelserne
        ServerDrev[1]:=Chr(ComboBox1.ItemIndex+65); // En nem måde at omregne til et drev fra valgt item

        ServerScriptDir:=Edit1.Text;    ServerScriptDir[1]:=Chr(ComboBox1.ItemIndex+65);

      End;
      GemAlleSelections; // Så er tingene gemt til næste gang vi starter programmet
    End;

  Finally
    FormIndstil.Free;
  End;
end;

// Viser aboutbox på skærmem

procedure TFormFaktServ.About1Click(Sender: TObject);
begin
  AboutBox.ShowModal;
end;


procedure TFormFaktServ.FormShow(Sender: TObject);
begin
  SplashForm.Free;
end;

procedure TFormFaktServ.Consolvindue(Sender: TObject);
begin
  frmMain.ShowModal;
end;

end.
Avatar billede doc404 Novice
16. juli 2005 - 11:08 #12
Hvordan ser din project source ud (Project|View source) ?
Avatar billede ingeman Seniormester
16. juli 2005 - 11:13 #13
program TlfServer;



uses
  Forms,
  TlfMain in 'TlfMain.pas' {FormFaktServ},
  TlfInBox in 'TlfInBox.pas' {FormIndstil},
  TlfAbout in 'TlfAbout.pas' {AboutBox},
  TlfSplashForm in 'TlfSplashForm.pas' {SplashForm},
  formMain in 'formMain.pas' {frmMain};

{$R *.RES}

begin
  Application.Initialize;
  SplashForm :=TSplashForm.Create(NIL);
  SplashForm.Show;
  SplashForm.Repaint;
  Application.CreateForm(TFormFaktServ, FormFaktServ);
  Application.CreateForm(TAboutBox, AboutBox);
  Application.CreateForm(TfrmMain, frmMain);
  Application.Run;
end.
Avatar billede doc404 Novice
16. juli 2005 - 12:01 #14
Er problemet ikke blot, at du tror dine events ikke bliver kaldt, fordi du ikke får skrevet noget i memo'en - som du gør når du indsætter en showmessage?
Avatar billede ingeman Seniormester
16. juli 2005 - 12:34 #15
Hvis jeg unlader showmessage - kalder programmet ikek nogen event feks.
procedure TfrmMain.VaComm1RxChar(Sender: TObject; Count: Integer);
begin
  Memo2.Lines.Text := Memo2.Lines.Text + VaComm1.ReadText;
  Memo1.Lines.add('Reading ' + IntToStr(Count) + ' bytes');
end;

Jeg mener jo at showmessage gør at form bliver aktiveret - og form event bliver kaldt ?
Avatar billede ingeman Seniormester
16. juli 2005 - 12:35 #16
så hvordan kalder man lige showmessage eller noget ligende som kan sørge for at alle events bliver kaldt ?
Avatar billede ingeman Seniormester
16. juli 2005 - 12:36 #17
en andenting er jo at programmet stopper - det skal det ikke - det skal køre videre.
Avatar billede ingeman Seniormester
21. januar 2007 - 10:53 #18
åbn svar
Avatar billede ingeman Seniormester
19. februar 2007 - 19:49 #19
lukket
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