AGB  ·  Datenschutz  ·  Impressum  







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

Exception NACH Prozeduren

Ein Thema von Angel4585 · begonnen am 14. Mär 2006 · letzter Beitrag vom 14. Mär 2006
Antwort Antwort
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

Exception NACH Prozeduren

  Alt 14. Mär 2006, 14:39
Hallo zusammen,

ich hab ein RIESEN Problem:

ich hab eine MDI Anwendung in der ich mit

TMeinMDIChild.Create(tfMain); ein MDI Child erzeuge.

In diesem Child hab ich einen TActionmanager und eine TActionToolBar

Dazu hab ich mehrere TActions erzeugt, von denen zwei sich "abwechseln".

D.h.mit dieser Prozedur ändere ich die Action auf der ActionToolbar:
Delphi-Quellcode:
procedure ChangeModus(AModus : TModus);
begin
case AModus of
 erstermodus:Actionmanager.actionbars.actionbars[0].Items[0]:=ErsteAction;
 zweitermodus :Actionmanager.actionbars.actionbars[0].Items[0]:=ZweiteAction;
 end;
end;
NACHDEM diese Prozedur ausgeführt wurde, jedoch nicht bei jeder Ausführung kommt eine Zugriffsverletzung, die aber nirgends in meinem Quelltext abfangbar ist. Nur im Application.OnException komm ich an die ran.

Also: Nachdem das Programm diese Prozedur durchlaufen hat kommt die Exception, obwohl damit sämtlichen Prozeduren, Ereignisse oder sonstwas erledigt sind und einfach nur die Actions getauscht wurden.

Info:
1.Ich hab keine Threads nebenher laufen.
2.Wenn ich die Case weglasse und einfach nur immer das Gleiche zuweise kommt der Fehler nicht.
3.Der Fehler tritt NUR in diesem speziellen Fenster auf und nicht in anderen, die jedoch genau die gleichen lokalen Prozeduren verwenden.

Verwunderlich ist aber vorallem, dass der Fehler nicht bei jedem Durchlauf auftritt, sondern nur "wenn er Lust dazu hat"

Hatte jemand schonmal so ein Problem und weis vielleicht was das sein könnte?

Danke schonmal

MfG
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#2

Re: Exception NACH Prozeduren

  Alt 14. Mär 2006, 14:46
Klingt nach unbeabsichtigtem Überschreiben von Speicherstellen - außer Suchen und Debuggen hilft da nicht viel.
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Exception NACH Prozeduren

  Alt 14. Mär 2006, 14:52
ich hab ca. 20 andere Formulare, die jeweils haargenau die selben Variablen ud die selben Prozeduren verwenden und bei denen es einwandfrei funktioniert.

Ausserdem schreib ich nirgends was in Variablen oder so..

Das hier ist der komplette Code:

Delphi-Quellcode:
procedure TtfKonten.LoadKontenToTreeView;
begin
with tvKonten.Items do
 begin
 AddChild(nil,cKontodaten);
 AddChild(nil,cAnsprechpartner);
 AddChild(nil,cOptionen);
 AddChild(nil,cNotizen);
 AddChild(nil,cZahlungen);
 end;
end;
{******************************************************************************}
procedure TtfKonten.FormCreate(Sender: TObject);
begin
OpenedForms[ftKonten]:=True;
if Owner is TtfMain then
 FormStyle:=fsMDIChild;
ChangeMode(BenutzerEinstellungen.ErsteModulAnsicht);
ChangeShowedPart(spZahlung);
LoadKontenToTreeView;
end;
{******************************************************************************}
procedure TtfKonten.FormClose(Sender: TObject; var Action: TCloseAction);
begin
OpenedForms[ftKonten]:=False;
Action:=caFree;
end;
{******************************************************************************}
procedure TtfKonten.FilterActivate(AFActive : Boolean);
var
 b : TBitmap;
begin
//unvollständig
if AFActive then
 sbFilter.Action:=Filter_deactivate
else sbFilter.Action:=Filter_Activate;
//Bild auf Speedbutton setzen
b:=TBitmap.Create;
AMKonten.Images.GetBitmap(TAction(sbFilter.Action).ImageIndex,b);
sbFilter.Glyph:=b;
b.Free;
end;
{******************************************************************************}
procedure TtfKonten.Filter_DeactivateExecute(Sender: TObject);
begin
FilterActivate(False);
end;
{******************************************************************************}
procedure TtfKonten.Filter_ActivateExecute(Sender: TObject);
begin
FilterActivate(True);
end;
{******************************************************************************}
procedure TtfKonten.EditExecute(Sender: TObject);
begin
ChangeMode(mtEdit);
end;//Hier ist ein Haltepunkte , bis hierhin funkitoniert alles einwandfrei, erst danach kommt ein Fehler
{******************************************************************************}
procedure TtfKonten.BrowseExecute(Sender: TObject);
begin
ChangeMode(mtBrowse);//
end;//Hier ist ein Haltepunkte , bis hierhin funkitoniert alles einwandfrei, erst danach kommt ein Fehler
{******************************************************************************}
procedure TtfKonten.SchliessenExecute(Sender: TObject);
begin
Close;
end;
{*******************************************************************************
****In ChangeMode wird der Modus in den Übergebenen Modus gewechselt************
****hierbei wird das jeweilige Panel im Zentrum ********************************
****und der entsprechende Button in der Toolbar angezeigt***********************
*******************************************************************************}

procedure TtfKonten.ChangeMode(AMode : TModeTypes);
var a: TAction;
begin
pEditMode.Visible:= AMode = mtEdit;
PBrowseMode.Visible:= AMode = mtBrowse;
pZahlungen.Visible:= AMode = mtZahlung;
if AMode = mtEdit then a:=Browse
else a:=Edit;
AMKonten.ActionBars.BeginUpdate;
AMKonten.ActionBars[0].Items[7].Action:=a;//Hier weise ich die Action zu!!
{if AMode = mtBrowse then
AMKonten.ActionBars[0].Items[7].Action:=Edit
else AMKonten.ActionBars[0].Items[7].Action:=Browse;
AMKonten.ActionBars.EndUpdate;
Caption:=Format('Kontenübersicht [%s]',[ModeStrings[AMode]]);}


end;
{******************************************************************************}
procedure TtfKonten.tvKontenChange(Sender: TObject; Node: TTreeNode);
begin
{
try
with tvKonten do
begin
ChangeShowedPart(spNone);
if Selected.Text = cKontodaten then
  ChangeShowedPart(spKontodaten)
else if Selected.Text = cOptionen then
  ChangeShowedPart(spOptionen)
else if Selected.Text = cNotizen then
  ChangeShowedPart(spNotizen)
else if Selected.Text = cAnsprechpartner then
  ChangeShowedPart(spAnsprechpartner)
else if Selected.Text = cNotizen then
  ChangeShowedPart(spNotizen);
end;
except
end;}

end;
{******************************************************************************}
procedure TtfKonten.ChangeShowedPart(APart : TShowingParts);
begin
pKontodaten.Visible:=APart = spKontodaten;
pNotizen.Visible:=APart = spNotizen;
pOptionen.Visible:= APart = spOptionen;
pZahlung.Visible:= APart = spZahlung;
pAnsprechpartner.Visible:= APart = spAnsprechpartner;
end;
{******************************************************************************}
procedure TtfKonten.Zahlungen_zuweisenExecute(Sender: TObject);
begin
ChangeMode(mtZahlung);
end;
Diese Case-Anweisung hab ich schon paarmal überarbeitet in den letzten 1,5 Stunden.. deswegen ists nichtmehr ganz so wie ichs oben geschrieben hab...
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Exception NACH Prozeduren

  Alt 14. Mär 2006, 14:58
Habs grad(hoffentlich endgültig) gelöst:

So funktioniert es:
Delphi-Quellcode:
Actionmanager.actionbars.actionbars[0].items[0].action:=nil;
Actionmanager.actionbars.actionbars[0].items[0].action:=neue_action;
aber warum funktioniert das und das andere(ohne nil setzen) nicht?
Martin Weber
Ich bin ein Rüsselmops
  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 00:32 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