![]() |
Wie greife ich auf Funktionen in einem Formular zu?
Hallo,
für viele von Euch mag diese Frage zu einfach sein, aber ich schaffe es nicht eine plausible Lösung zu finden. Bitte hlft mir!!!! BITTÄ!!! Also: Ich habe ein Formular (Nennen wir es mal fmA) mit ein paar Funktionen drin. Ein paar davon sind private, ein paar public. Nun will ich von einem Anderen Formulat (fmB) eine fkt aus fmA aufrufen und das ergebnis weiter in fmB verarbeiten. Wenn ich aber z.b. showmessage(fmA.FktName(var)); mache merke ich ,dass die fkt im fmA gar nicht ausgeführt wird. Also das Ergebnis ist immer '' egal was ich in Result:='hadoken' reinschreibe; :-( Wäre für Tipps sehr dankbar!!! Gruß Mojo |
Re: Wie greife ich auf Funktionen in einem Formular zu?
hast du schonmal einen haltepunkt in die funktion von deinem formularA gemacht und dann mit f8 durchgegangen und geschaut wo der fehler auftritt. Ich vermute du gehst in der funktion einfach nicht auf den parameter der funktion ein sondern nutzt irgendwelche werte direkt vom formularA
|
Re: Wie greife ich auf Funktionen in einem Formular zu?
Poste doch mal die Funktion ;)
|
Re: Wie greife ich auf Funktionen in einem Formular zu?
äöähmmm...... ok hier: die ist "etwas" lang..
Delphi-Quellcode:
und die fkt selbst
public
function start(anztage:Integer):Double;
Delphi-Quellcode:
Die Formatierung ist nicht ganz sauber, aber ich denke das ist lesbar.
function TfmTarifrechner.start(anztage:Integer):Double;
var ALoger:string; ACounter, counter, medcounter: integer; AId, rechn_array:String; i,j,k:Integer; preis:Double; begin showmessage('sdfsdf'); memo1.Lines.add('start wird ausgeführt...'); dxMediaCount.Active:=False; dxMEdiaCount.Active:=True; dxFertigtarife.Active:=False; dxFertigtarife.Active:=True; if dmData.ibtMedia.Active=False then dmData.ibtMedia.Active:=True; dmData.ibtargruppen.First; for k:=1 to dmData.ibtargruppen.RecordCount do begin dmData.ibtMedia.First; for i:=1 to dmData.ibtMedia.RecordCount do begin memo1.lines.add('duchsuche ibtMedia...'); tbTransTemp.First; medcounter:=0; for j:=1 to tbTransTemp.RecordCount do begin //memo1.Lines.add('Durchsuche tbTranTemp...'); if (tbTransTempMEDIUM_ID.AsInteger=dmData.ibtMediaMED_ID.AsInteger) and (tbTransTempTARIFGRP_ID.AsInteger=dmData.ibtargruppenTGR_ID.AsInteger) then begin medcounter:=medcounter+1; memo1.Lines.Add('medcounter um 1 erhöht...'); end; tbTransTemp.Next; end; //j if medcounter>0 then begin //showmessage('mediunter>1'); dxMediacount.Insert; dxMediaCountMED_ID.AsInteger:=dmData.ibtMediaMED_ID.AsInteger; dxMediacountMED_ANZ.AsInteger:=medcounter; //dxMediaCountMED_NAME.AsString:=dmData.ibtMediaMED_TYPE.AsString; dxMediaCountTARGRP_ID.AsInteger:=dmData.ibtargruppenTGR_ID.AsInteger; //dxMediaCountTARGRP_NAME.AsString:=dmData.ibtargruppenTGR_NAME.AsString; //dxMediaCountTARGRP_COLOR.AsString:=dmData.ibtargruppenTGR_COLOR.AsString; dxMediaCount.Post; end; dmData.ibtMedia.Next; //es wird jetzt gezählt, wieviel und welche medien in tbTrans //sind. das ergebnis wird in dxMediaCount gespeichert. end;//for i dmData.ibtargruppen.next; end; //for k memo1.lines.add('soo... anz der medien gezählt.'); if dxMediaCount.Active=False then dxMEdiaCount.Active:=True; dxMediaCount.First; // jetzt wird anhand von dxMediaCount geguckt, welche tarife und wie oft reinpassen // dafür ist die funktion findemaxtarif zuständig. diese ist rekursiv und ist sowieso //zauberhaft. for i:=1 to dxMediaCount.RecordCount do begin resttage:=anztage; findemaxtarif(dxMediacountMED_ID.AsInteger, dxMediacountMED_ANZ.AsInteger, dxMediaCountTARGRP_ID.AsInteger, resttage); dxMediaCount.Next; end;// for tbTransTemp.Next; //end; //for i //jetzt preise zusammenzählen preis:=0; dxFertigtarife.First; for i:=1 to dxFertigtarife.RecordCount do begin preis:=preis+gettarifpreis(dxFertigTarifeTARIF_ID.AsInteger, dxFertigtarifeTARIF_ANZ.AsInteger); memo1.lines.add('DER PREIS: '+FloatToStr(preis)); dxFertigtarife.Next; end; Result:=preis; end; //ganz ende Notiz: nichteinmal showmessage() am Anfang wird ausgeführt... :-( HOffe konnte damit mehr Unklarheiten beseitigen als aufbauen... @ SirThornberry also es tritt ja kein Fehler im allgemeinen sinne auf. ich sehe keine fehlermeldung... es scheint so als ob die fkt ausgeführt wird.... :gruebel: mojo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 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