AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken TDBMEMO mit eigener Textanzeige
Thema durchsuchen
Ansicht
Themen-Optionen

TDBMEMO mit eigener Textanzeige

Ein Thema von bernhard_LA · begonnen am 23. Mär 2018 · letzter Beitrag vom 23. Mär 2018
Antwort Antwort
Seite 1 von 2  1 2      
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#1

TDBMEMO mit eigener Textanzeige

  Alt 23. Mär 2018, 07:18
Datenbank: ALLE • Version: ALLE • Zugriff über: ALLE
ich benötige ein TDBmemo welche nicht den in der Datenbank gespeicherten String direkt anzeigt sondern mit anhand von Benutzerinformationen verändert und erst dann anzeigt. (zb. den Text erst entschlüsseln)
Welche Funktion in der KLass TDB Memo müsste ich hier überschreiben, reicht hier eine FUnktion zum Überschreiben oder wird dies ein größeres Projekt ?

Delphi-Quellcode:
TDBMemo = class(TCustomMemo)
  private
    FDataLink: TFieldDataLink;
    FAutoDisplay: Boolean;
    FFocused: Boolean;
    FMemoLoaded: Boolean;
    FPaintControl: TPaintControl;
    class constructor Create;
    class destructor Destroy;
    procedure DataChange(Sender: TObject);
    procedure EditingChange(Sender: TObject);
    function GetDataField: string;
    function GetDataSource: TDataSource;
    function GetField: TField;
    function GetReadOnly: Boolean;
    procedure SetDataField(const Value: string);
    procedure SetDataSource(Value: TDataSource);
    procedure SetReadOnly(Value: Boolean);
    procedure SetAutoDisplay(Value: Boolean);
    procedure SetFocused(Value: Boolean);
    procedure UpdateData(Sender: TObject);
    procedure WMCut(var Message: TMessage); message WM_CUT;
    procedure WMPaste(var Message: TMessage); message WM_PASTE;
    procedure WMUndo(var Message: TMessage); message WM_UNDO;
    procedure WMClear(var Message: TMessage); message WM_CLEAR;
    procedure CMEnter(var Message: TCMEnter); message CM_ENTER;
    procedure CMExit(var Message: TCMExit); message CM_EXIT;
    procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
    procedure CMGetDataLink(var Message: TMessage); message CM_GETDATALINK;
    procedure SetLines;
  protected
    procedure Change; override;
    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
    procedure KeyPress(var Key: Char); override;
    procedure Loaded; override;
    procedure Notification(AComponent: TComponent;
      Operation: TOperation); override;
    procedure WndProc(var Message: TMessage); override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    function ExecuteAction(Action: TBasicAction): Boolean; override;
    procedure LoadMemo; virtual;
    function UpdateAction(Action: TBasicAction): Boolean; override;
    function UseRightToLeftAlignment: Boolean; override;
    property Field: TField read GetField;
  published
    property Align;
    property Alignment;
    property Anchors;
    [Default(True)]
    property AutoDisplay: Boolean read FAutoDisplay write SetAutoDisplay default True;
    property BevelEdges;
    property BevelInner;
    .....
  end;
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: TDBMEMO mit eigener Textanzeige

  Alt 23. Mär 2018, 07:41
Hallo,
einfach TMemo verwenden, oder eigene Komponente und LoadMemo und UpdateAction überschreiben.
Heiko

Geändert von hoika (23. Mär 2018 um 07:56 Uhr)
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.205 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TDBMEMO mit eigener Textanzeige

  Alt 23. Mär 2018, 07:54
Vielleicht helfen dir auch berechnete Felder des DataSets.
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TDBMEMO mit eigener Textanzeige

  Alt 23. Mär 2018, 07:57
wenn ich von Tmemo ableite , wie bekommme ich mit, daß sich Z.B. der Datensatzzeiger geändert hat ?
welche Events muss ich hier implementieren ?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TDBMEMO mit eigener Textanzeige

  Alt 23. Mär 2018, 08:19
Dann würde ich dies beim Lesen aus dem Datenbankfeldes machen (Event OnGetText von TField).
Markus Kinzler
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TDBMEMO mit eigener Textanzeige

  Alt 23. Mär 2018, 09:08
kann ich Unterstützung bekommen damit meine Komponente auf Änderunegn in der Datenmenge richtig reagiert ?


unit Unit_DBmemoS;


interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB;



Delphi-Quellcode:
type
  TDBmemoS = class(TMemo)
  private

    { Private-Deklarationen }

    Fdatasource : Tdatasource ;

    FdataField : String;

    procedure Setdatasource(const Value: Tdatasource);
    procedure SetdataField(const Value: String);

  protected
    { Protected-Deklarationen }

  public
    { Public-Deklarationen }

  published
    { Published-Deklarationen }


  property datasoure : Tdatasource read Fdatasource write Setdatasource ;

  property dataField : String read FdataField write SetdataField ;
  end;

procedure Register;

implementation


procedure Register;
begin
  RegisterComponents('TOOLS', [ TDBmemoS]);
end;





procedure TDBmemoS.SetdataField(const Value: String);
begin
  FdataField := Value;
end;

procedure TDBmemoS.Setdatasource(const Value: Tdatasource);
begin
  Fdatasource := Value;
end;

end.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: TDBMEMO mit eigener Textanzeige

  Alt 23. Mär 2018, 09:12
Du brauchst eigentlich kein neues TDBMemo, sondern musst nur auf den Leseevent reagieren und dort die Entschlüsselung durchführen.
Markus Kinzler
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: TDBMEMO mit eigener Textanzeige

  Alt 23. Mär 2018, 09:18
wie müsste dies aussehen ? ich benötige ein paar Infos über die mögliche Implementierung
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: TDBMEMO mit eigener Textanzeige

  Alt 23. Mär 2018, 09:24
Im dataSet hast du ja Felder angelegt, diese haben jeweils einen den genannten Event OnGetText. Wenn du die Property mit einen Eventhandler belegst, dann wird dieser bei jedem Lesevorgang auf das DataSet (TDBMemo, TDBEDit, DataSet.FiledByName(), ...) aufgerufen und Du kannst dort das Ergebnis manipulieren ( z.B. entschlüsseln).

Delphi-Quellcode:
procedure <TDataModule>.FieldGetText(Sender: TField; var Text: string;
  DisplayText: Boolean);
begin
  Text := Entschluesseln( Sender.Value);
end;
Du kannst die Methode an alle Felder hängen.

Delphi-Quellcode:
for i:=0 to <DataSet>.Field.Count-1 do
begin
  <DataSet>.Field[i].onGetText := FieldGetText;
end;
Markus Kinzler

Geändert von mkinzler (23. Mär 2018 um 09:33 Uhr)
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: TDBMEMO mit eigener Textanzeige

  Alt 23. Mär 2018, 10:26
wäre dies dann ein class helper für TDataset ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:33 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