Results 1 to 4 of 4

Thread: IntraWeb IWDBGrid kolom verbergen

  1. #1

    IntraWeb IWDBGrid kolom verbergen

    Hallo,

    Ik vul momenteel een IWDBGrid via een TFDQuery in RunTime. Ik vraag alle kolommen mee op.
    Dit zijn er in feite teveel en nu wil ik de kolommen die ik niet nodig heb verbergen. Dit is zo gedaan, omdat het variabel is welke kolommen er gebruikt worden. Dit verbergenprobeer ik in het OnRenderCell event te doen.
    Probeer de volgende Code:

    Code:
    procedure TDataHandlerForm.IWDBGridRenderCell(ACell: TIWGridCell; const ARow,
      AColumn: Integer);
    var cf : integer;
    begin
        cf := editfile.tag;
        if AColumn = 0 then begin
          ACell.Text        := '';
          ACell.DisplayName := '';
          ACell.visible     := false;
          ACell.Invalidate;
        end
        else if AColumn = 1 then begin
          ACell.Text        := '';
          ACell.DisplayName := '';
          ACell.visible     := false;
        end
        else if (AColumn = 2) then begin
          if ACell.Text = 'Code' then begin
            ACell.Text := FileDef[cf].Name[Acolumn-2];
            ACell.DisplayName := FileDef[cf].Name[Acolumn-2];
          end;
          ACell.visible := FileDef[cf].Visible[Acolumn-2];
        end
        else if (AColumn >= 3) and (AColumn <= 32) then begin
          if (pos('String',ACell.text)> 0) then begin
            ACell.Text        := FileDef[cf].Name[Acolumn+fdb];
            ACell.DisplayName := FileDef[cf].Name[Acolumn+fdb];
          end;
          ACell.visible := FileDef[cf].Visible[Acolumn+fdb];
        end
        else if (AColumn >= 33) and (AColumn <= 62) then begin
          if (pos('Number',ACell.text)> 0) then begin
            ACell.DisplayName := FileDef[cf].Name[Acolumn+fdb];
          end;
          ACell.visible := FileDef[cf].Visible[Acolumn+fdb];
        end
        else if (AColumn >= 63) and (AColumn <= 92) then begin
          if (pos('Logical',ACell.text)> 0) then
            ACell.DisplayName := FileDef[cf].Name[Acolumn+fdb];
          ACell.visible := FileDef[cf].Visible[Acolumn+fdb];
        end
        Else if (AColumn = 93) and (ACell.Text = 'NumCode') then begin
            ACell.DisplayName := 'NumCode';
          ACell.visible := False;
        end;
    end;
    Maar dan krijg ik de volgende Grid te zien.
    Click image for larger version. 

Name:	Grid.jpg 
Views:	179 
Size:	42.6 KB 
ID:	7128

    Zoals je kan zien zijn de kolommen niet weg, maar gewoon leeg.
    Weet iemand een andere/ betere manier om dit voor elkaar te krijgen. En heb al veel gezegd hiervoor, maar documentatie over intraweb en de componenten is wel erg slecht.
    Als meer code ofzo nodig hebt laat maar weten.

  2. #2
    Is het niet mogelijk om gewoon de .Visible property van de kolom op false te zetten??

    Delphi Code:
    1. TIWDBGridColumn(IWDBGrid1.Columns.Items[AColumn]).Visible := false;

    Nu zet je alleen de ACell.visible op false maar de kolom blijft zichtbaar.

    (ook vraag ik me af of IWDBGridRenderCell niet te laat is om de kolom nog te verbergen maar ik heb totaal geen ervaring met de TIWDBGrid)

  3. #3
    Senior Member Wok's Avatar
    Join Date
    Dec 2002
    Location
    Alkmaar
    Posts
    2,085
    Quote Originally Posted by dadio25 View Post
    Dit zijn er in feite teveel en nu wil ik de kolommen die ik niet nodig heb verbergen
    Ik zou voor elke optie een eigen query maken.
    En alleen de gegevens ophalen die je daadwerkelijk wilt zien.
    Dit scheelt enorm veel tijd in downloaden , en moeite, om dat je het jezelf moeilijker maakt dan nodig is.

    Gr. Peter
    10.4.2, Delphi2010, of Lazarus 2.2.0

  4. #4
    Bedankt voor de hulp, maar het volgende was het inderdaad.

    Code:
    TIWDBGridColumn(grid.Columns.Items[0]).Visible := false;
    Had deze al eens geprobeerd, maar kreeg hier een fout melding op dat TIWDBGridColumn geen default proprety had, maar was gewoon een fout in mijn code.

    Maar doe dit in mijn FormShow na:
    Code:
          Iwdbgrid.datasource := UniWinQdata.SrcBaseQ;
          IWDBGrid.CreateImplicitColumns;
    Dan zijn de default kolommen al gecreëerd en dan kan ik alles aanpassen.

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
  •