Einzelnen Beitrag anzeigen

Benutzerbild von Ookami
Ookami

Registriert seit: 20. Nov 2009
Ort: Baden Württemberg
77 Beiträge
 
Delphi 2009 Architect
 
#13

AW: Verständnisprobleme mit FMX

  Alt 7. Mai 2015, 19:43
Ok, das habe ich so zur Kenntnis genommen, etwas zerknirscht, da sich die Frames bislang eigentlich als sehr gut funktional erwiesen haben.
In meinem Prototypen (auf VCL-Basis) hat das sehr gut funktioniert. Daher verstehe ich das Problem nicht ganz.

Der Frame selbst wird nur einmal instanziiert, also denke ich dass das nicht wirklich das Problem sein sollte.
Ich wollte bewusst nicht mit mehreren Instanzen arbeiten.

Code:
     if FontDialogFrame=NIL then
     begin
          FontDialogFrame := TFontDialogFrame.Create(Self);
         
          FontDialogFrame.Setup;
     end;
     if FontDialogFrame<>NIL then
     begin
          FontDialogFrame.AssignLabels;

          FontDialogFrame.Position.X := LessonMenuFrame.Position.X + LessonMenuFrame.Width + 50;
          FontDialogFrame.Position.Y := LessonMenuFrame.Position.Y + 150;

          FontDialogFrame.onChangeFont := FontChange;
     end;

wenn ich den Button "Landesschrift" (linkes Bild im vorherigen Post) drücke, wird ein Event ausgelöst,

Code:
     MyFont := TMBFontFMX.Create;
     
     MyFont.FontName := MainForm.Vocabulary[cBxLanguages.ItemIndex].LanguagePack.Lang1FontName;
     MyFont.FontSize := StrToInt(MainForm.Vocabulary[cBxLanguages.ItemIndex].LanguagePack.Lang1FontSize);
     MyFont.FontStyle := MBTools.ReturnFontStyle(StrToInt(MainForm.Vocabulary[cBxLanguages.ItemIndex].LanguagePack.Lang1FontStyle));
     MyFont.FontColor := StrToInt64(MainForm.Vocabulary[cBxLanguages.ItemIndex].LanguagePack.Lang1FontColor);
     
     if Assigned(onWantToChangeFont) then onWantToChangeFont(Sender, cBxLanguages.ItemIndex, 1, hlp, MyFont);
     MyFont.Free;
Der wiederum ruft dann den "Dialog" (rechtes Bild)

Code:
Procedure TSettingsFrm.CallChangeFontFrame(Sender: TObject; Language, Track : Integer; Value : String; Font: TMBFontFMX);
begin
     FontDialogFrame.Parent := TC;
     FontDialogFrame.fFontColor := Font.FontColor;
     FontDialogFrame.Fontname := Font.FontName;
     FontDialogFrame.FontSize := Font.FontSize;
     FontDialogFrame.FontStyle := Font.FontStyle;
     FontDialogFrame.Example := Value;
     FontDialogFrame.LanguageNum := Language;
     FontDialogFrame.FontNum := Track;
     
     FontDialogFrame.ShowFrame;
end;
Der wiederum sollte dann eigentlich das ausführen, was wir da vorher gemacht haben.

Code:
procedure TFontDialogFrame.ExamplePanelEvenPaint(Sender: TObject; Canvas: TCanvas);
Var      aRect : TRectF;
begin
     aRect := TPaintBox (Sender).BoundsRect;
     
     with TPaintBox (Sender).Canvas Do
     begin
          BeginScene;
           Fill.Color := MainForm.EvenRowColor;
           FillRect(Arect, 1,1, AllCorners,1);

           Font.Family := Fontname;
           Font.Style := FontStyle;
           Font.Size  := FontSize;
           Fill.Color := FontColor;
           FillText (ARect, fExample, True, 1, [], TTextAlign.Center, TTextAlign.Center);

          EndScene;
     end;
end;
Nachdem die Hintergrundfarben ja stimmen und alle anderen Daten auch korrekt ankommen, wundere ich mich doch, warum keine der Komponenten reagiert.
bzw. die Anzeige reagiert dann, wenn ich das mache - also auskommentiere
Code:
          // Font.Family := Fontname;
          //  Font.Style := FontStyle;
          //  Font.Size  := FontSize;
aber dann zeigt es mir natürlich keinen Font mehr korrekt an.

ansonsten ist das Ergebnis:
Versuch 1: Starte ich neu und stelle gleich "Französisch" ein, kommt nix. Wechsle ich auf "Deutsch" wird es angezeigt.
Versuch 2: Starte ich neu und stelle gleich "Deutsch" ein, wird das angezeigt. Wechsle ich auf "Französisch" wird es nicht angezeigt. wieder zurück auf "Deutsch" - funktioniert.
Wolfgang
Grüße und Danke
Wolfgang

Geändert von Ookami ( 7. Mai 2015 um 19:49 Uhr) Grund: war ein bisschen konfus
  Mit Zitat antworten Zitat