AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Font.Style ins Clientdataset Laden

Ein Thema von Natcree · begonnen am 7. Dez 2013 · letzter Beitrag vom 8. Dez 2013
Antwort Antwort
Seite 1 von 2  1 2   
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#1

Font.Style ins Clientdataset Laden

  Alt 7. Dez 2013, 16:32
Hallo Habe eine Datenbank mit nem Clientdataset und ner Datasource und möchte nun von einem TButton die Eigenschaft Font.style in die DB laden.

clientdataset1.FieldByName('Fontstyle').AsBoolean:= Schaltflaeche.Font.Style; Das und alles andere habe ich versucht. Ich kriegs einfach nicht hin.

Hat jemand ne lösung???
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Font.Style ins Clientdataset Laden

  Alt 7. Dez 2013, 16:42
ein FontStyle ist ja auch kein Boolean.

Was du machen kannst ist den String zu speichern den auch die IDE dir anzeigt (also das [fsBold ...])

Gugst du mal diesen Thread ob nicht das dabei ist was du benötigst.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Font.Style ins Clientdataset Laden

  Alt 7. Dez 2013, 16:47
Ich habe es auch mit .asstring versucht aber dort kann ich dann nach Schaltflaeche.font. <-- kein style einfügen.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: Font.Style ins Clientdataset Laden

  Alt 7. Dez 2013, 17:42
Hallo Habe eine Datenbank mit nem Clientdataset und ner Datasource und möchte nun von einem TButton die Eigenschaft Font.style in die DB laden.
Du mußt für jeden der möglichen Styles ein Boolean-Feld anlegen. Ich hab hier mal ein Beispiel, wie man den Style eines selektierten Textes in einem RichEdit in die Checked-Properties eines PopUp-Menüs überträgt:
Delphi-Quellcode:
procedure TFormMain.Popup_RichEdPopup(Sender: TObject);
begin
     IF DBRichEd_Inhalt.SelAttributes.Style = [] THEN
     BEGIN
          PuP_Red_Normal.Checked := TRUE;
          PuP_Red_Fett.Checked := FALSE;
          PuP_Red_Kursiv.Checked := FALSE;
          PuP_Red_ULine.Checked := FALSE;
     END;
     IF DBRichEd_Inhalt.SelAttributes.Style = [fsBold] THEN
     BEGIN
          PuP_Red_Normal.Checked := FALSE;
          PuP_Red_Fett.Checked := TRUE;
          PuP_Red_Kursiv.Checked := FALSE;
          PuP_Red_ULine.Checked := FALSE;
     END;
     IF DBRichEd_Inhalt.SelAttributes.Style = [fsItalic] THEN
     BEGIN
          PuP_Red_Normal.Checked := FALSE;
          PuP_Red_Fett.Checked := FALSE;
          PuP_Red_Kursiv.Checked := TRUE;
          PuP_Red_ULine.Checked := FALSE;
     END;
     IF DBRichEd_Inhalt.SelAttributes.Style = [fsUnderline] THEN
     BEGIN
          PuP_Red_Normal.Checked := FALSE;
          PuP_Red_Fett.Checked := FALSE;
          PuP_Red_Kursiv.Checked := FALSE;
          PuP_Red_ULine.Checked := TRUE;
     END;
     IF DBRichEd_Inhalt.SelAttributes.Style = [fsBold,fsItalic] THEN
     BEGIN
          PuP_Red_Normal.Checked := FALSE;
          PuP_Red_Fett.Checked := TRUE;
          PuP_Red_Kursiv.Checked := TRUE;
          PuP_Red_ULine.Checked := FALSE;
     END;
     IF DBRichEd_Inhalt.SelAttributes.Style = [fsBold,fsUnderline] THEN
     BEGIN
          PuP_Red_Normal.Checked := FALSE;
          PuP_Red_Fett.Checked := FALSE;
          PuP_Red_Kursiv.Checked := FALSE;
          PuP_Red_ULine.Checked := TRUE;
     END;
     IF DBRichEd_Inhalt.SelAttributes.Style = [fsItalic,fsUnderline] THEN
     BEGIN
          PuP_Red_Normal.Checked := FALSE;
          PuP_Red_Fett.Checked := FALSE;
          PuP_Red_Kursiv.Checked := TRUE;
          PuP_Red_ULine.Checked := TRUE;
     END;
     IF DBRichEd_Inhalt.SelAttributes.Style = [fsBold,fsItalic,fsUnderline] THEN
     BEGIN
          PuP_Red_Normal.Checked := FALSE;
          PuP_Red_Fett.Checked := TRUE;
          PuP_Red_Kursiv.Checked := TRUE;
          PuP_Red_ULine.Checked := TRUE;
     END;
end;
Falls du nicht gleich verstehst, was ich hier mache: Ich hab ein PopUpMenü, das verschiedene Einträge für Schriftstyles enthält: Normal, Fett, Kursiv, ULine. Diese Einträge können nun einen Haken haben (checked) oder auch nicht. Analog dazu kannst du dir deine Boolean-Felder in der Tabelle vorstellen. Das Normal-Feld kannst du natürlich weglassen, das definiert sich ja schon dadurch, daß eines der anderen Felder True ist. Alles klar?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Font.Style ins Clientdataset Laden

  Alt 7. Dez 2013, 19:34
Da Delphi-Referenz durchsuchenTFontStyle ein Set ist, kann man so ein Set als string (z.B. "[fsBold,fsItalic]") darstellen (Funktionen gibt es dafür in beide Richtungen).

Am einfachsten ist es aber - weil es ein Set ist - den Wert in einen Integer zu überführen.

Delphi-Quellcode:
var
  FontStyleAsInt : integer;
begin
  // in einen Integer
  FontStyleAsInt := Integer( MyFont.Style );
  // und wieder zurück
  Integer( MyFontStyle ) := FontStyleAsInt;
end;
Schon brauchen wir uns nicht mehr fragen, wie bekommen wir den TFontStyle in die Datenbank, sondern einen Integer-Wert.

@Perlsau

Wenn ich das machen sollte, dann würde mir spontan das hier einfallen
Delphi-Quellcode:
begin
  PuP_Red_Normal.Checked := ( DBRichEd_Inhalt.SelAttributes.Style = [] );
  PuP_Red_Fett.Checked := ( fsBold in DBRichEd_Inhalt.SelAttributes.Style );
  PuP_Red_Kursiv.Checked := ( fsItalic in DBRichEd_Inhalt.SelAttributes.Style );
  PuP_Red_ULine.Checked := ( fsUnderline in DBRichEd_Inhalt.SelAttributes.Style );
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#6

AW: Font.Style ins Clientdataset Laden

  Alt 7. Dez 2013, 19:56
Man kann sich das Set auch via RTTI in einen String konvertieren lassen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: Font.Style ins Clientdataset Laden

  Alt 7. Dez 2013, 20:24
@Perlsau

Wenn ich das machen sollte, dann würde mir spontan das hier einfallen
Delphi-Quellcode:
begin
  PuP_Red_Normal.Checked := ( DBRichEd_Inhalt.SelAttributes.Style = [] );
  PuP_Red_Fett.Checked := ( fsBold in DBRichEd_Inhalt.SelAttributes.Style );
  PuP_Red_Kursiv.Checked := ( fsItalic in DBRichEd_Inhalt.SelAttributes.Style );
  PuP_Red_ULine.Checked := ( fsUnderline in DBRichEd_Inhalt.SelAttributes.Style );
end;
Hab Dank, Sir Rufo, das ist unbestreitbar eleganter. Würde ich heute auch so machen. Der gepostete Code war aus einem älteren Projekt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#8

AW: Font.Style ins Clientdataset Laden

  Alt 7. Dez 2013, 21:09
Nur das Normal würde ich besser weglassen, daß es eine "nutzlose" doppelte Information ist.


Nicht nur nutzlos, sondern glatt wiedersprüchlich, denn was ist, wenn Normal mal True ist und irgendeines der Anderen Felder auch?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: Font.Style ins Clientdataset Laden

  Alt 7. Dez 2013, 21:43
Also habe gerade das Popupmenu erstellt aber er ändert den Haken nich von normal auf Kursiv oder fett.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#10

AW: Font.Style ins Clientdataset Laden

  Alt 7. Dez 2013, 21:43
Nur das Normal würde ich besser weglassen, daß es eine "nutzlose" doppelte Information ist.
Mein lieber Himitsu, das steht doch bereits in meinem Posting, wenn du noch mal nachlesen möchtest:
"Das Normal-Feld kannst du natürlich weglassen, das definiert sich ja schon dadurch, daß eines der anderen Felder True ist."

Natürlich wird das Normal zum Abspeichern in der DB nicht benötigt. Da ich jedoch ein Popupmenü beschrieben habe, das den Style eines selektieren Textes wiedergeben soll, gehörte dort das Normal dazu. Oder mit anderen Worten: Am späten Abend neigt man häufig zum Drüberlesen, so daß einem wichtige Details entgehen können.

Also habe gerade das Popupmenu erstellt aber er ändert den Haken nich von normal auf Kursiv oder fett.
Mein lieber Natcree, du hattest doch vor, die Style-Eigenschaften eines (oder vielleicht auch mehrerer) Buttons in der Datenbank abzulegen und nicht die Style-Eigenschaften eines selektierten Textes in einem PopUp-Menü abzubilden. Wozu hast du dir denn jetzt ein PopUp-Menü erstellt und was hast du versucht, um dort eingetragene Style-Eigenschaften mit Checked-Haken zu versehen bzw. diese zu entfernen?

Geändert von Perlsau ( 7. Dez 2013 um 21:48 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:01 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