Fortschrittsbalken tut nicht

  • So, ich hab jetzt alles in eine Modal Session gepackt und ... es klappt wunderbar!

    Ein Ding hab ich noch: Wenn man das Programm startet und ohne Start- und Endedatum zu verändern eine Berechnung auslöst, dauert es zeimlich lange und auch die Progressbar flackert. Das tut er solange und so oft, bis das erste mal Start- oder Endedatum verändert werden. Danach tut er, wie er soll und recht flüssig.

    Was kann das sein?

    Könnt Ihr Euch das mal bitte ansehen? Hab die fertige App mal auf meinen Server geladen. Verzugszinsen MAC Download
    Ich bin gegen Signaturen!!!
  • Amin Negm-Awad schrieb:

    Na, ja, mit der fertigen App kann jetzt wohl keiner etwas anfangen. Zeig noch einmal die Schleife.


    Ja, da hast Du wohl recht ;) Also hier die Aktion:

    Quellcode

    1. - (IBAction)rechnen:(id)sender
    2. {
    3. NSModalSession modalSession = [[NSApplication sharedApplication] beginModalSessionForWindow: _window];
    4. beginn = [beginn_eingabe dateValue];
    5. ende = [ende_eingabe dateValue];
    6. piinterval = [ende timeIntervalSinceDate:beginn] / 86400;
    7. [fortschritt setMaxValue:piinterval];
    8. [fortschritt setMinValue:0.0];
    9. [fortschritt setHidden:FALSE];
    10. [fortschritt startAnimation: self];
    11. [starteberechnung setEnabled:NO];
    12. // alles leeren
    13. [zinsAC removeObjects:[zinsAC arrangedObjects]];
    14. NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    15. NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
    16. beginn = [beginn_eingabe dateValue];
    17. beginnfest = [beginn_eingabe dateValue];
    18. ende = [ende_eingabe dateValue];
    19. unsigned uhrzeitsetzen = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
    20. NSDateComponents *compbeginn = [gregorian components:uhrzeitsetzen fromDate:beginn];
    21. [compbeginn setSecond:0];
    22. [compbeginn setMinute:0];
    23. [compbeginn setHour:0];
    24. beginn = [gregorian dateFromComponents:compbeginn];
    25. NSDateComponents *compende = [gregorian components:uhrzeitsetzen fromDate:ende];
    26. [compende setSecond:0];
    27. [compende setMinute:0];
    28. [compende setHour:0];
    29. ende = [gregorian dateFromComponents:compende];
    30. unsigned unitFlags = NSMonthCalendarUnit | NSYearCalendarUnit;
    31. NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    32. NSInteger mode = [[geschaeftsart selectedCell] tag];
    33. switch (mode) {
    34. case 0: zinsauswahl = 5; break;
    35. case 1: zinsauswahl = 8; break;
    36. case 2: zinsauswahl = [dynzins_eingabe floatValue]; break;
    37. case 3: zinsauswahl = [festzins_eingabe floatValue]; break; }
    38. zinsArray=[[NSMutableArray alloc]init];
    39. tagecountergesamt = 0;
    40. tagcounterhalbjahr = 0;
    41. anzahl_tage = 0;
    42. jahrflag = 0;
    43. halbjahrflag = 0;
    44. saldo = 0;
    45. betrag = [betrag_eingabe floatValue];
    46. do {
    47. NSDateComponents *comp = [gregorian components:unitFlags fromDate:beginn];
    48. NSTimeInterval secondsElapsed = [ende timeIntervalSinceDate:beginn];
    49. anzahl_tage++;
    50. tagecountergesamt = (secondsElapsed / 86400);
    51. jahrflag = [comp year];
    52. halbjahrflag = ([comp month] - 1) / 6;
    53. switch ([comp year]) {
    54. case 2002: if (!halbjahrflag) basiszins = 2.57; else basiszins = 2.47; break;
    55. case 2003: if (!halbjahrflag) basiszins = 1.97; else basiszins = 1.22; break;
    56. case 2004: if (!halbjahrflag) basiszins = 1.14; else basiszins = 1.13; break;
    57. case 2005: if (!halbjahrflag) basiszins = 1.21; else basiszins = 1.17; break;
    58. case 2006: if (!halbjahrflag) basiszins = 1.37; else basiszins = 1.95; break;
    59. case 2007: if (!halbjahrflag) basiszins = 2.70; else basiszins = 3.19; break;
    60. case 2008: if (!halbjahrflag) basiszins = 3.32; else basiszins = 3.19; break;
    61. case 2009: if (!halbjahrflag) basiszins = 1.62; else basiszins = 0.12; break;
    62. case 2010: if (!halbjahrflag) basiszins = 0.12; else basiszins = 0.12; break;
    63. case 2011: if (!halbjahrflag) basiszins = 0.12; else basiszins = 0.37; break;
    64. case 2012: if (!halbjahrflag) basiszins = 0.12; else basiszins = 0.12; break;
    65. default: basiszins = 0.12; }
    66. if (mode == 3) zinssatz = zinsauswahl; else zinssatz = basiszins + zinsauswahl;
    67. if ( ( ([comp year] % 4 == 0) && ([comp year] % 100 != 0) ) || ([comp year] % 400 == 0) ) tageszinsen = ((zinssatz / 100) / 366) * betrag;
    68. else tageszinsen = ((zinssatz / 100) / 365) * betrag;
    69. zinsen = tageszinsen*++tagcounterhalbjahr;
    70. saldo += tageszinsen;
    71. [formatter setDateFormat:@"ddMM"];
    72. NSString *beginnabfrage = [formatter stringFromDate: beginn];
    73. if (![[betrag_eingabe stringValue] isEqualToString: @""]) {
    74. if ( [beginnabfrage isEqualToString: @"3006"] || [beginnabfrage isEqualToString: @"3112"] || [beginn isEqualToDate: ende]) {
    75. // Array schreiben
    76. [formatter setDateFormat:@"dd.MM.yyyy"];
    77. newDic=[NSMutableDictionary dictionaryWithObjectsAndKeys:
    78. [NSString stringWithFormat:@"%@ - %@", [formatter stringFromDate: beginnfest], [formatter stringFromDate: beginn]], @"zeitraum",
    79. [NSString stringWithFormat: @"%i", tagcounterhalbjahr], @"tage",
    80. [NSString stringWithFormat: @"%.2f %%", zinssatz], @"zinssatz",
    81. [NSString stringWithFormat: @"%.4f Euro", tageszinsen], @"protag",
    82. [NSString stringWithFormat: @"%.2f Euro", zinsen], @"imzeitraum",
    83. [NSString stringWithFormat: @"%.2f Euro", saldo], @"saldo",
    84. nil];
    85. [zinsAC addObject:newDic];
    86. tagcounterhalbjahr = 0;
    87. beginnfest = beginn;
    88. if ([beginnfest isEqualToDate:beginn]) {
    89. [dateComponents setDay:+1];
    90. beginnfest = [gregorian dateByAddingComponents:dateComponents toDate: beginnfest options:0];
    91. }
    92. }
    93. }
    94. [dateComponents setDay:+1];
    95. beginn = [gregorian dateByAddingComponents:dateComponents toDate: beginn options:0];
    96. // Progressbar aktualisieren
    97. [[NSApplication sharedApplication] runModalSession: modalSession];
    98. [fortschritt setDoubleValue:(double)anzahl_tage];
    99. } while (tagecountergesamt >0);
    100. gesamtstand = saldo + betrag;
    101. // Ausgabe
    102. NSString *betragString = [NSString stringWithFormat:@"%.2f Euro",betrag];
    103. [betrag_ausgabe setStringValue:betragString];
    104. if (![[betrag_eingabe stringValue] isEqualToString: @""]) {
    105. gesamtstring = [NSString stringWithFormat:@"%.2f Euro",gesamtstand];
    106. } else {
    107. gesamtstring = @"Sie müssen einen Rechnungsbetrag eingeben!";
    108. }
    109. [gesamt_ausgabe setStringValue:gesamtstring];
    110. NSString *tageString = [NSString stringWithFormat:@"%li Tage",anzahl_tage];
    111. [tage_ausgabe setStringValue:tageString];
    112. NSString *tageszinsenString = [NSString stringWithFormat:@"%.2f Euro",tageszinsen];
    113. [protag_ausgabe setStringValue:tageszinsenString];
    114. [formatter setDateFormat:@"dd.MM.yyyy"];
    115. [beginn_ausgabe setStringValue:[NSString stringWithFormat:@"%@", [formatter stringFromDate:[beginn_eingabe dateValue]]]];
    116. [ende_ausgabe setStringValue:[NSString stringWithFormat:@"%@", [formatter stringFromDate:[ende_eingabe dateValue]]]];
    117. [starteberechnung setEnabled:YES];
    118. [fortschritt stopAnimation: self];
    119. [fortschritt setHidden:TRUE];
    120. [[NSApplication sharedApplication] endModalSession: modalSession];
    121. }
    Alles anzeigen
    Ich bin gegen Signaturen!!!
  • Hallo, ich habs nur mal schnell überfolgen und möchte noch einen Tipp mit an die Hand geben.

    Wenn ich mich recht entsinne dauert ein Bankmonat immer 30 Tage, da gibt es weder Schaltsekunde noch Schaltjahre. Wenn ich das aber richtig sehe bezieht sich deine Berechnung auf die tatsächlich verstrichenen Tage. Muss man das aber nicht auf den Bankmonat umrechnen? Ich hab da keine Ahnung von, frage nur rein interessehalber.

    Übrigens: Ein Flackern deutet darauf hin, dass der Progressbar öfters neu gezeichnet wird. Pack dir doch mal einen Breakpoint rein und schau wie oft die While-Schleife angetriggert wird. Ich könnte mir Vorstellen weil nichts geändert wurde arbeitet die while-Schleife länger als nötig, vielleicht sogar doppelt und dreifach.
    [self setSignature:null];
    [[self postCount] increment];
  • Mike schrieb:

    Hallo, ich habs nur mal schnell überfolgen und möchte noch einen Tipp mit an die Hand geben.

    Wenn ich mich recht entsinne dauert ein Bankmonat immer 30 Tage, da gibt es weder Schaltsekunde noch Schaltjahre. Wenn ich das aber richtig sehe bezieht sich deine Berechnung auf die tatsächlich verstrichenen Tage. Muss man das aber nicht auf den Bankmonat umrechnen? Ich hab da keine Ahnung von, frage nur rein interessehalber.

    Übrigens: Ein Flackern deutet darauf hin, dass der Progressbar öfters neu gezeichnet wird. Pack dir doch mal einen Breakpoint rein und schau wie oft die While-Schleife angetriggert wird. Ich könnte mir Vorstellen weil nichts geändert wurde arbeitet die while-Schleife länger als nötig, vielleicht sogar doppelt und dreifach.


    Wie schon oben beschrieben, werden hier Verzugszinsen nach der taggenauen act/act-Methode berechnet. Das hat nichts mit Bankzinsen zu tun.

    Wie while-schleife wird genau so oft durchlaufen, wie die Anzahl der Tage zwischen Start- und Endedatum.
    Ich bin gegen Signaturen!!!
  • beage schrieb:

    Wie schon oben beschrieben, werden hier Verzugszinsen nach der taggenauen act/act-Methode berechnet. Das hat nichts mit Bankzinsen zu tun.

    Ah, das hatte ich übersehen. act/act-Methode kannte ich noch gar nicht...das ist ja ne ganz schön verwirrende Sache was es da alles gibt.


    Hast du inzwischen schonmal mit geloggt? Dü könntest auch NSLogs verwenden (An Schlüsselstellen NSLogs einfügen) um nachzuhalten was wann passiert. Die findest du dann in der Konsole (Shift+Apfel+R, ich hoffe bei Xcode 4 ist das auch noch so, verwende selbst nur Xcode 3) ;)
    [self setSignature:null];
    [[self postCount] increment];
  • Ja, alles schon probiert und nichts gefunden. Ich bin aber ein Stück weiter in der Suche. Es muss irgendwas mit der Initialisierung von den Variablen sein.

    Wenn ich den Cursor nach der ersten Berechnung in das Betragsfeld stelle und einen neuen Betrag eingebe, dann auf Berechnung klicke, tut sich gar nichts. Erst wenn ich den Cursor wieder in ein Datumsfeld stelle gehts los und dann auch rasend schnell ohne zu flackern.
    In den TextField-Optionen kann ich zwar bei Action "Send On End Editing" oder "Send On Enter Only" auswählen, das hat aber keine Auswirkungen.
    Ich bin gegen Signaturen!!!
  • Da wäre ich ja jetzt nicht drauf gekommen, aber welche WERTE haben beginn und ende denn? Weiter stellt sich die Frage ob deine Routine evtl. mehrmals parallel Aufgerufen wird, denn wenn Du ein runModalSession machst, dann werden ja Events abgearbeitet. Wenn jetzt, die beiden Date Picker jeweils eine Berechnung anstoßen, dann kommst Du ein weiteres mal in deinen Code.
  • Snoxxi schrieb:

    Da wäre ich ja jetzt nicht drauf gekommen, aber welche WERTE haben beginn und ende denn? Weiter stellt sich die Frage ob deine Routine evtl. mehrmals parallel Aufgerufen wird, denn wenn Du ein runModalSession machst, dann werden ja Events abgearbeitet. Wenn jetzt, die beiden Date Picker jeweils eine Berechnung anstoßen, dann kommst Du ein weiteres mal in deinen Code.


    In beginn steht zum Programmstart der 01.01.20011 und in ende das aktuelle Datum

    Parallel kann da nix aufgerufen werden. Ich starte die Modale Session mit einem Button und dieser wird während der Berechnung ausgegraut.

    Hier nochmal der komplette Code aus der .m :

    Quellcode

    1. #import "AppDelegate.h"
    2. @implementation AppDelegate
    3. @synthesize window = _window;
    4. @synthesize betrag_eingabe;
    5. @synthesize betrag_ausgabe;
    6. @synthesize dynzins_eingabe;
    7. @synthesize festzins_eingabe;
    8. @synthesize gesamt_ausgabe;
    9. @synthesize geschaeftsart;
    10. @synthesize beginn_eingabe;
    11. @synthesize ende_eingabe;
    12. @synthesize tage_ausgabe;
    13. @synthesize beginn_ausgabe;
    14. @synthesize ende_ausgabe;
    15. @synthesize protag_ausgabe;
    16. @synthesize zinsArray;
    17. @synthesize fortschritt;
    18. @synthesize info_copyright;
    19. @synthesize info_bundlename;
    20. @synthesize info_version;
    21. - (IBAction)setMinDate:(id)sender
    22. {
    23. [ende_eingabe setMinDate: [beginn_eingabe dateValue]];
    24. }
    25. - (IBAction)setMaxDate:(id)sender
    26. {
    27. [beginn_eingabe setMaxDate: [ende_eingabe dateValue]];
    28. }
    29. - (IBAction)setheute:(id)sender {
    30. [ende_eingabe setDateValue: [NSDate date]];
    31. }
    32. - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
    33. {
    34. [ende_eingabe setDateValue: [NSDate date]];
    35. startbetrag = 1000;
    36. [betrag_eingabe setFloatValue:startbetrag];
    37. dynzins = 2;
    38. [dynzins_eingabe setFloatValue:dynzins];
    39. festzins = 10;
    40. [festzins_eingabe setFloatValue:festzins];
    41. NSBundle *mainBundle = [NSBundle mainBundle];
    42. [info_bundlename setStringValue: [mainBundle objectForInfoDictionaryKey:@"CFBundleName"]];
    43. [info_copyright setStringValue: [mainBundle objectForInfoDictionaryKey:@"NSHumanReadableCopyright"]];
    44. [info_version setStringValue:[NSString stringWithFormat:@"Version: %@ (%@)", [mainBundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"],[mainBundle objectForInfoDictionaryKey:@"CFBundleVersion"]]];
    45. zinsArray=[[NSMutableArray alloc]init];
    46. newDic=[[NSMutableDictionary alloc] init];
    47. }
    48. - (IBAction)showSheet:(id)sender {
    49. // [zeigesheet setEnabled:NO];
    50. [NSApp beginSheet:theSheet modalForWindow:(NSWindow *)_window modalDelegate:self didEndSelector:nil contextInfo:nil];
    51. [logo setImage: [NSImage imageNamed: @"qrlogo.png"]];
    52. }
    53. -(IBAction)closeSheet:(id)sender {
    54. // [zeigesheet setEnabled:YES];
    55. [NSApp endSheet:theSheet];
    56. [theSheet orderOut:sender];
    57. }
    58. - (IBAction)rechnen:(id)sender
    59. {
    60. NSModalSession modalSession = [[NSApplication sharedApplication] beginModalSessionForWindow: _window];
    61. betrag = [betrag_eingabe floatValue];
    62. beginn = [beginn_eingabe dateValue];
    63. beginnfest = [beginn_eingabe dateValue];
    64. ende = [ende_eingabe dateValue];
    65. piinterval = [ende timeIntervalSinceDate:beginn] / 86400;
    66. [fortschritt setMaxValue:piinterval];
    67. [fortschritt setMinValue:0.0];
    68. [fortschritt setHidden:FALSE];
    69. [fortschritt startAnimation: self];
    70. [starteberechnung setEnabled:NO];
    71. // alles leeren
    72. [zinsAC removeObjects:[zinsAC arrangedObjects]];
    73. NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    74. NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
    75. unsigned uhrzeitsetzen = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
    76. NSDateComponents *compbeginn = [gregorian components:uhrzeitsetzen fromDate:beginn];
    77. [compbeginn setSecond:0];
    78. [compbeginn setMinute:0];
    79. [compbeginn setHour:0];
    80. beginn = [gregorian dateFromComponents:compbeginn];
    81. NSDateComponents *compende = [gregorian components:uhrzeitsetzen fromDate:ende];
    82. [compende setSecond:0];
    83. [compende setMinute:0];
    84. [compende setHour:0];
    85. ende = [gregorian dateFromComponents:compende];
    86. unsigned unitFlags = NSMonthCalendarUnit | NSYearCalendarUnit;
    87. NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    88. NSInteger mode = [[geschaeftsart selectedCell] tag];
    89. switch (mode) {
    90. case 0: zinsauswahl = 5; break;
    91. case 1: zinsauswahl = 8; break;
    92. case 2: zinsauswahl = [dynzins_eingabe floatValue]; break;
    93. case 3: zinsauswahl = [festzins_eingabe floatValue]; break; }
    94. zinsArray=[[NSMutableArray alloc]init];
    95. tagecountergesamt = 0;
    96. tagcounterhalbjahr = 0;
    97. anzahl_tage = 0;
    98. jahrflag = 0;
    99. halbjahrflag = 0;
    100. saldo = 0;
    101. do {
    102. NSDateComponents *comp = [gregorian components:unitFlags fromDate:beginn];
    103. NSTimeInterval secondsElapsed = [ende timeIntervalSinceDate:beginn];
    104. anzahl_tage++;
    105. tagecountergesamt = (secondsElapsed / 86400);
    106. jahrflag = [comp year];
    107. halbjahrflag = ([comp month] - 1) / 6;
    108. switch ([comp year]) {
    109. case 2002: if (!halbjahrflag) basiszins = 2.57; else basiszins = 2.47; break;
    110. case 2003: if (!halbjahrflag) basiszins = 1.97; else basiszins = 1.22; break;
    111. case 2004: if (!halbjahrflag) basiszins = 1.14; else basiszins = 1.13; break;
    112. case 2005: if (!halbjahrflag) basiszins = 1.21; else basiszins = 1.17; break;
    113. case 2006: if (!halbjahrflag) basiszins = 1.37; else basiszins = 1.95; break;
    114. case 2007: if (!halbjahrflag) basiszins = 2.70; else basiszins = 3.19; break;
    115. case 2008: if (!halbjahrflag) basiszins = 3.32; else basiszins = 3.19; break;
    116. case 2009: if (!halbjahrflag) basiszins = 1.62; else basiszins = 0.12; break;
    117. case 2010: if (!halbjahrflag) basiszins = 0.12; else basiszins = 0.12; break;
    118. case 2011: if (!halbjahrflag) basiszins = 0.12; else basiszins = 0.37; break;
    119. case 2012: if (!halbjahrflag) basiszins = 0.12; else basiszins = 0.12; break;
    120. default: basiszins = 0.12; }
    121. if (mode == 3) zinssatz = zinsauswahl; else zinssatz = basiszins + zinsauswahl;
    122. if ( ( ([comp year] % 4 == 0) && ([comp year] % 100 != 0) ) || ([comp year] % 400 == 0) ) tageszinsen = ((zinssatz / 100) / 366) * betrag;
    123. else tageszinsen = ((zinssatz / 100) / 365) * betrag;
    124. zinsen = tageszinsen*++tagcounterhalbjahr;
    125. saldo += tageszinsen;
    126. [formatter setDateFormat:@"ddMM"];
    127. NSString *beginnabfrage = [formatter stringFromDate: beginn];
    128. if (![[betrag_eingabe stringValue] isEqualToString: @""]) {
    129. if ( [beginnabfrage isEqualToString: @"3006"] || [beginnabfrage isEqualToString: @"3112"] || [beginn isEqualToDate: ende]) {
    130. // Array schreiben
    131. [formatter setDateFormat:@"dd.MM.yyyy"];
    132. newDic=[NSMutableDictionary dictionaryWithObjectsAndKeys:
    133. [NSString stringWithFormat:@"%@ - %@", [formatter stringFromDate: beginnfest], [formatter stringFromDate: beginn]], @"zeitraum",
    134. [NSString stringWithFormat: @"%i", tagcounterhalbjahr], @"tage",
    135. [NSString stringWithFormat: @"%.2f %%", zinssatz], @"zinssatz",
    136. [NSString stringWithFormat: @"%.4f Euro", tageszinsen], @"protag",
    137. [NSString stringWithFormat: @"%.2f Euro", zinsen], @"imzeitraum",
    138. [NSString stringWithFormat: @"%.2f Euro", saldo], @"saldo",
    139. nil];
    140. [zinsAC addObject:newDic];
    141. tagcounterhalbjahr = 0;
    142. beginnfest = beginn;
    143. if ([beginnfest isEqualToDate:beginn]) {
    144. [dateComponents setDay:+1];
    145. beginnfest = [gregorian dateByAddingComponents:dateComponents toDate: beginnfest options:0];
    146. }
    147. }
    148. }
    149. [dateComponents setDay:+1];
    150. beginn = [gregorian dateByAddingComponents:dateComponents toDate: beginn options:0];
    151. // Progressbar aktualisieren
    152. [[NSApplication sharedApplication] runModalSession: modalSession];
    153. [fortschritt setDoubleValue:(double)anzahl_tage];
    154. } while (tagecountergesamt >0);
    155. gesamtstand = saldo + betrag;
    156. // Ausgabe
    157. NSString *betragString = [NSString stringWithFormat:@"%.2f Euro",betrag];
    158. [betrag_ausgabe setStringValue:betragString];
    159. if (![[betrag_eingabe stringValue] isEqualToString: @""]) {
    160. gesamtstring = [NSString stringWithFormat:@"%.2f Euro",gesamtstand];
    161. } else {
    162. gesamtstring = @"Sie müssen einen Rechnungsbetrag eingeben!";
    163. }
    164. [gesamt_ausgabe setStringValue:gesamtstring];
    165. NSString *tageString = [NSString stringWithFormat:@"%li Tage",anzahl_tage];
    166. [tage_ausgabe setStringValue:tageString];
    167. NSString *tageszinsenString = [NSString stringWithFormat:@"%.2f Euro",tageszinsen];
    168. [protag_ausgabe setStringValue:tageszinsenString];
    169. [formatter setDateFormat:@"dd.MM.yyyy"];
    170. [beginn_ausgabe setStringValue:[NSString stringWithFormat:@"%@", [formatter stringFromDate:[beginn_eingabe dateValue]]]];
    171. [ende_ausgabe setStringValue:[NSString stringWithFormat:@"%@", [formatter stringFromDate:[ende_eingabe dateValue]]]];
    172. [starteberechnung setEnabled:YES];
    173. [fortschritt stopAnimation: self];
    174. [fortschritt setHidden:TRUE];
    175. [[NSApplication sharedApplication] endModalSession: modalSession];
    176. }
    177. @end
    Alles anzeigen
    Ich bin gegen Signaturen!!!