Results 1 to 4 of 4

Thread: NLDStringGrid v2.0

  1. #1
    Silly member NGLN's Avatar
    Join Date
    Aug 2004
    Location
    Werkendam
    Posts
    4,744

    NLDStringGrid v2.0

    Om het maar even in de stijl van de oorspronkelijke auteur te zeggen:

    Hier is 'tie dan: NLDStringGrid v2.0

    Een opsomming van de wijzigingen:

    TNLDStringGrid:
    Toegevoegde functionaliteit:
    • Zonder properties in te stellen werkt het grid exact gelijk aan het standaard TStringGrid
    • Color-property's kunnen op clDefault gezet worden, waarmee ze weer de standaardkleur krijgen
    • Merging: samenvoegen van cellen
    • Merged InplaceEdit(List) met font en achtergrondkleur van betreffende cell
    • Stamt nu af van TCustomDrawGrid i.p.v. TStringGrid: nieuwe opslagmethode
    • Dubbelklikken op een kolom-titel past de breedte van die kolom aan aan de breedste tekst
    • Import/export van/naar csv-bestand
    • Met F4 klapt de InplaceEditor open indien Column.EditStyle in [esPickList, esPickListOnly]

    Toegevoegde properties en events:
    • AlternatingRowColors: TStringGridRowColors (EvenRowColor: TColor, IncludeFixed: Boolean, OddRowColor: TColor, OverrideColumnColor: Boolean)
    • AutoRowHeights: Boolean
    • DefaultDrawing: TDefaultDrawingModes (ddBackground, ddEdges, ddGridLines, ddGlyphs, ddText, ddFocusRect)
    • FixedFont: TFont
    • FocusRectColor: TColor
    • FocusRectStyle: TFocusRectStyle (frDefault, frSolidAutoBW, frSolidCustomColor)
    • MemoryOptions: TMemoryOptions (moBeyondGrid, moProportional, moStoreColsRows, moSparseStorage)
    • OnEditButtonClick: TNotifyEvent
    • OnTitleClick: TTitleClickEvent
    • OwnsObjects: Boolean
    • SelectionAlphaBlend: Boolean
    • SelectionAlphaBlendValue: Byte
    • SelectionColor: TColor
    • StretchModes: TStretchModes (StretchRight, StretchAll, ShrinkRight, ShrinkAll)
    • SyncColumns: Boolean (True: ColCount = Columns.Count; False: ColCount >= Columns.Count)
    • Values[Col, Row]: Variant

    Toegevoegde Methods:
    • procedure AutoColWidth(ACol: Integer);
    • procedure AutoRowHeight(ARow: Integer);
    • procedure BeginUpdateData;
    • procedure EndUpdateData;
    • procedure ExportCSV(const FileName: TFileName; TitlesFirstRow: Boolean);
    • procedure ImportCSV(const FileName: TFileName; TitlesFirstRow: Boolean);
    • procedure MergeCells(const AGridRect: TGridRect; MergeText: Boolean; MultiLine: Boolean);
    • procedure ResetAllFonts(AFont: TFont = nil);
    • procedure ResetMainColors(AGridColor: TColor = clWindow; AFixedColor: TColor = clBtnFace);
    • procedure SetGradientColumnColors(First, Last: TColor; ColumnsOnly: Boolean);
    • procedure UnMergeCells(const AGridRect: TGridRect);

    Aangepaste properties, methods en events:
    • TInputStyle (isMask en isCustom aan toegevoegd)
    • FixedLineColor (nieuwe naam: FixedGridLineColor)
    • OnDrawCell (parameters Column en Stage aan toegevoegd)
    • GridLineWidth (reintroduced)
    • StretchRight (dat is nu StretchModes geworden)

    TStringGridColumns:
    Toegevoegde property:
    • OnColumnsChanged

    TStringGridColumn:
    Toegevoegde properties:
    • Action: TBasicAction
    • EditMask: TEditMask
    • Fixed: Boolean
    • MinWidth: Integer
    • MaxWidth: Integer
    • OnTitleClick: TNotifyEvent
    • RowNumbers: Boolean
    • Visible: Boolean

    Opgeloste bugs:
    • Zwarte fixed-cellen bij ReadOnly
    • Breedte eerste kolom
    • Toevoegen, verwijderen en verplaatsen van Columns in Collection-editor
    • Niet meeverplaatsen van Cell-inhoud bij verplaatsen van Columns of Rows
    • Niet meeverplaatsen van Columns bij slepen van Columns (alleen de Cell-inhoud werd verplaatst)
    • Ctl3D bij fixed cellen
    • Niet alle options werkten
    • Overbodige property opslag in DFM. Elke property heeft nu een default value
    • FixedLineColor
    • FocusRectColor
    • FocusRect in alle geselecteerde cellen bij DrawFocusSelected = False

    To do:
    • Hint voor afgekapte cellteksten
    • AutoMerge (bij te lange tekst, automatisch de volgende cell erbij pakken, indien leeg)
    • Printen
    • Sorteren op column (met indicator)
    • Grouping van regels/kolommen: collapse/expand
    • Figuren in cellen
    • Rounded corners
    • Multiple selections
    • Etc...

    Waar te vinden?
    Vereist:

    Veel plezier ermee!
    Last edited by NGLN; 21-Apr-09 at 20:25.
    (Sender as TNLDUser).Signature := 'Groeten van Albert';

  2. #2
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    6,379
    Voor D2009 gebruikers:
    De compiler klaagt over deze regels:
    delphi Code:
    1. Result := (Key in CHARSET_INTEGER) and // regel 2879
    2. Result := Key in CHARSET_ABSINTEGER; // regel 2883
    3. Result := (Key in (CHARSET_INTEGER + [DS])) and // regel 2885
    4. Result := (Key in (CHARSET_ABSINTEGER + [DS])) and // regel 2890
    En geeft daardoor deze optie:
    [DCC Warning] NLDStringgrid.pas(2879): W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
    [DCC Warning] NLDStringgrid.pas(2883): W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
    [DCC Warning] NLDStringgrid.pas(2885): W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
    [DCC Warning] NLDStringgrid.pas(2890): W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
    Het is dan op te lossen op de volgende manier:
    delphi Code:
    1. Result := CharInSet(Key,CHARSET_INTEGER) and  // regel 2879
    2. Result := CharInSet(Key,CHARSET_ABSINTEGER); // regel 2883
    3. Result := CharInSet(Key,(CHARSET_INTEGER + [DS])) and // regel 2885
    4. Result := CharInSet(Key,(CHARSET_ABSINTEGER + [DS])) and // regel 2890
    Ik weet niet of het op te lossen in een precompiler constructie. Dan is het component geschikt voor elke versie van Delphi.

    Verder mis ik eigenlijk een propertie om het CSV bestand te plaatsen en e.v.t. te kunnen selecteren vanuit een dialog.
    De boolean in ImportCSV zal een constante waarde kunnen zijn bij niet invoeren van een waarde.
    Ook kreeg ik de CSV niet goed geimporteerd. Wordt de structuur van de stringgrid aangepast op basis van de CSV bestand of moet dat zelf door de programmeur worden geregeld.

    Verder zag het er netjes uit en vond het (naar mijn bevindingen) de code netjes geprogrameerd.
    Delphi is great. Lazarus is more powerfull

  3. #3
    Silly member NGLN's Avatar
    Join Date
    Aug 2004
    Location
    Werkendam
    Posts
    4,744
    Thanks.

    D2009, is dat af te vangen met {$IFDEF VER210} ? En gelden die WideChar warnings vanaf D2009 of misschien al een eerdere versie?

    De property om een CSV-bestand @designtime mee in te laden zie ik zelf persoonlijk niet zo zitten, maar je mag hem inbouwen hoor: daar is 't OpenSource voor...;-)

    Die TitlesFirstRow parameter zou geen default value mogen hebben vind ik, want waar moet je dan vanuit gaan? De gebruiker van deze twee routines moet gewoon opgeven of de eerste regel van het csv-bestand kolomtitels zijn.

    De structuur van het Grid wordt niet automatisch aan de inhoud van het CSV-bestand aangepast. Dat zou een aantal beslissingen vragen met als gevolg een flinke parameterlijst. Maar misschien zouden we daar een overloaded routine voor kunnen schrijven.

    Wat ging er (verder) mis bij het importeren van jouw CVS-bestand? Kan dat eventueel te maken hebben met de spaties die niet tussen quote's staan? Zie ook het commentaar bij de routine ImportCSV.
    (Sender as TNLDUser).Signature := 'Groeten van Albert';

  4. #4
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    6,379
    D2009, is dat af te vangen met {$IFDEF VER210} ? En gelden die WideChar warnings vanaf D2009 of misschien al een eerdere versie?
    Volgens mij is het {$IFDEF VER120}, maar weet het niet zeker. Die melding komt vanuit de unicode omgeving. Ik weet alleen niet of je in D7 deze functie kan gebruiken, zodat de precompiler alleen compileert wat hij moet. Ik heb daar verder nooit mee gewerkt.
    Wat ging er (verder) mis bij het importeren van jouw CVS-bestand? Kan dat eventueel te maken hebben met de spaties die niet tussen quote's staan? Zie ook het commentaar bij de routine ImportCSV.
    De preciese foutmelding weet ik niet meer. Ik zal het morgen proberen op mijn andere pc. Daar heb ik het getest en daar heb ik ook D2009.
    De structuur van het Grid wordt niet automatisch aan de inhoud van het CSV-bestand aangepast. Dat zou een aantal beslissingen vragen met als gevolg een flinke parameterlijst. Maar misschien zouden we daar een overloaded routine voor kunnen schrijven.
    Dat vraag ik mij af. In principe wordt eerst de structuur gelezen van de CSV. Daarna zal d.m.v. de structuur de opbouw van de grid worden bepaald. Ik zal daar even kunnen naar kijken.
    Delphi is great. Lazarus is more powerfull

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •