AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MessgaeBox und ShowMessage ist riesig

Ein Thema von alf.stefan · begonnen am 3. Jan 2007 · letzter Beitrag vom 19. Jan 2007
 
alf.stefan

Registriert seit: 11. Apr 2003
88 Beiträge
 
Delphi 7 Professional
 
#1

MessgaeBox und ShowMessage ist riesig

  Alt 3. Jan 2007, 12:57
Hallo zusammen

ich habe von Konrad Elektronic ein usb Experimental board von velleman
und habe da eine Oberfläche programmiert mit der man eine Schrittkette ablaufen lassen kann.

Dabei werden Eingänge oder Timeouts in einem eigenen Threat gepollt und dann über eine Action list als Ergebnis in der Application mit TAction.Execute ein Event ausgelöst.

Das hat soweit prima geklappt.

Nun wollte ich auch noch ein Programmaufruf zur Auswertung einbinden.

die Klasse sieht so aus


Delphi-Quellcode:
unit Chain;

interface
uses Classes, iniFiles, sysUtils;
type TChainStep = class(TObject)
    actString: String;
    outputToSet : byte;
    msToWait: integer;
    inputToWait : smallInt;
    nextStepDann : shortInt;
    nextStepSonst: shortInt;
    next : shortInt;
    callRoutine : string;
end;
type TChain = class(tObject)
  count : word;
  curStep : smallInt;
  curIStat : byte;
  step : Array of TChainStep;
  constructor create;
end;
implementation
constructor TChain.create;
var
  ini : TIniFile;
  stepKey : string;
  cur : shortInt;
  stepText : string;
  lastReached:boolean;
  dir : string;
begin
  DecimalSeparator:='.';
  curStep := -1;
  cur:=1;
  dir := extractFileDir(paramStr(0));
  ini := TIniFile.Create(IncludeTrailingPathDelimiter(dir)+'chain.ini');

  try
     lastReached:=false;
     while not lastReached do
     begin
       stepKey := Format('%s%d',['Step',cur]);
       stepText := ini.ReadString(stepKey,'actString','Not Defined');
       if compareStr(stepText,'Not Defined')=0 then
        lastReached:= true
       else
       begin
         setLength(step, cur);
         step[cur-1] := TChainStep.Create;
         step[cur-1].actString := stepText;
         step[cur-1].outputToSet := ini.ReadInteger(stepKey,'outPut',0); // setze output 1
         step[cur-1].msToWait := ini.ReadInteger(stepKey,'msToWait',0); // warte unendlich
         step[cur-1].inputToWait := ini.ReadInteger(stepKey,'inputToWait',0); // auf input 2
         step[cur-1].nextStepDann:= ini.ReadInteger(stepKey,'nextStepDann',1)-1;// ergebnis gibts im nächsten schritt
         step[cur-1].nextStepSonst :=ini.ReadInteger(stepKey,'nextStepSonst',0)-1;//
         step[cur-1].callRoutine := ini.ReadString(stepKey,'callRoutine','');;
         inc(cur);
       end;
     end;//while
  finally
    ini.Free;
  end;
end;
end.
die Schrittkette ist ein Inifile und im Anhang
bei Step 5 ist eine Callroutine eingetragen die in der Application
Delphi-Quellcode:
...
    AskFor: TAction;
...
deklariert ist.

Wenn jetzt der Schritt mit der callRoutine kommt wird sie so aufgerufen

Delphi-Quellcode:


  if chain.step[actChain.Tag].callRoutine<>'then
  begin
     foundComponent := FindComponent(chain.step[actChain.Tag].callRoutine);
     Memo1.Lines.Append(foundComponent.Name);
     Memo1.Lines.Append(foundComponent.ClassName);
     TAction(foundComponent).Execute;
     if TAction(foundComponent).Tag = mrYes then
        actChain.Tag := chain.step[actChain.Tag].nextStepDann
     else actChain.Tag := chain.step[actChain.Tag].nextStepSonst;

     Memo1.Lines.Append(chain.step[actChain.Tag].actString);
  end;
wenn jetzt in askFor execute nur ShowMessage aufgerufen wird füllt die Messgaebox den kompletten Bildschirm und alles darüber hinaus! Scrollen bringt nicht das Fenster ist zu groß!

Bei MessgaeBox oder MessageDlg ist es nicht so schlimm aber das Fenster ist unendlich breit und die Buttons sind irgendwo im Nirwana. siehe screenshot

Kann damit jemand was anfangen??
Hat jemand auch so ein board? (dann kann ich ihm/ihr das ganze projekt ja mal zuschicken)

hoffe auf hilfe

Gruß stefan
Angehängte Grafiken
Dateityp: jpg screenshot_663.jpg (171,6 KB, 76x aufgerufen)
Angehängte Dateien
Dateityp: ini chain_195.ini (672 Bytes, 6x aufgerufen)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz