AGB  ·  Datenschutz  ·  Impressum  







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

was macht ein mausklick genau?

Ein Thema von benicz · begonnen am 2. Aug 2006
Antwort Antwort
benicz

Registriert seit: 29. Jul 2006
15 Beiträge
 
#1

was macht ein mausklick genau?

  Alt 2. Aug 2006, 20:30
hallo!

ich habe, wie in vielen beiträgen auch empfohlen und eigentlich logisch, den code, der bei einem onclick-ereignis ausgeführt werden soll, in eine eigene prozedur ausgelagert, weil er an einer anderen stelle auch ausgeführt werden soll.

es handelt sich hierbei um das öffnen einer zweiten form, in die ein datensatz eingegeben werden kann.

der eine aufruf geschieht wie gesagt beim onclick eines menuitems, der zweite beim auftreten eines midi-events.
(bei einigen klingelt's jetzt vielleicht: ich hab schonmal was hierzu gepostet, aber den großteil gelöst)

wenn ich jetzt die zweite form über das menü öffne, geht das einwandfrei.

wenn ich sie danach per midi-event öffne, auch.

wenn ich es aber direkt per midi versuche (ohne vorher per mausklick), klappt's nicht.

und immer, wenn ich es per midi mache, ist das zweite fenster trotz setfocus im hintergrund...


mein verdacht: das message-handling.
weil: wenn ich nach dem aufruf der öffnen-prozedur application.processmessages schreibe (in der midi-methode), zeigt er immerhin die objekte der form an (was er sonst nicht tut), und macht danach, bei erneutem midi-event, schritt für schritt alle eingaben, die ich zwischendurch mache (z. B. text in einem edit-feld markieren).

das heißt für mich:
ein klick-event macht irgendwas, das die weiterverarbeitung von messages erlaubt.


und jetzt endlich die frage:
was muss ich alles in die öffnen-prozedur schreiben, damit, egal, wie ich sie aufrufe, das gleiche passiert?
oder: was muss ich alles beim midi-event vor deren aufruf erledigen?

danke, ich bin echt am ende mit meinem latein


edit:
hier etwas code:
ich schreib aber nur sachen rein, die das problem angehen, weil's sonst zu viel wird...

Delphi-Quellcode:
{-------------------------------------------------------------------------------
domidiin: behandelt eingehende midi-events
-------------------------------------------------------------------------------}

procedure TForm1.DoMidiIn(const aDeviceIndex: integer; const aStatus,
  aData1, aData2: byte);

begin

  if aStatus = $FE then Exit;

  //fernbedienungskram
  FSchalter.doremote(aStatus, aData1, aData2);
end;

procedure TForm1.Submanual1Click(Sender: TObject);
begin
  FMandef.add; //die eine stelle des aufrufs
end;


{-------------------------------------------------------------------------------
doremote: behandelt schalterbewegungen
-------------------------------------------------------------------------------}

procedure TFSchalter.doremote(aStatus,aData1,aData2:byte);
begin
  FMandef.add; //und hier die andere.
  application.ProcessMessages; //ein versuch, da wird wenigstens angezeigt
  exit;
end;

procedure TFMandef.add;
var y,z:integer;
begin
//dummy bauen
  neuman:=true;
  with temp do
    begin
      // hier schreib ich dann was in den dummy
    end;
  edit(@temp);
end;

procedure TFMandef.edit(zeiger :pointer);
var z:byte;
begin
   if visible then //weil ich nicht modal aufrufen darf, hier der blocker
     exit;
   p:=TPSubmanual(zeiger); //in TMandef globaler zeiger auf das zu bearbeitende objekt
   display;
end;


procedure TFMandef.display;
begin
  //trägt alle sachen aus p in die felder im form ein, und dann
  show;
end;


procedure TFMandef.btokClick(Sender: TObject);
begin
  if neuman then
    begin
      //neuen datensatz erstellen und mit dem dummy füllen, dann
    end;
  close;
end;
ich hoffe, ich hab nix vergessen...
und bevor einwände kommen:
die gegenseitigen uses-einträge sind richtig (er findet auf jeden fall alles und es läuft ja auch)
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz