?
Solved

delphi6

Posted on 2013-07-01
8
Medium Priority
?
275 Views
Last Modified: 2013-08-15
i have a form, there is a combo box, date time picker, and a panel in the form.
In the panel two components are getting created at run time. One grid and one frame.
The frame contains one grid and the frame's parent is set to be the panel at runtime hence in my form i can see two grids at run time, say grid1(from frame) and grid2. Now grid1 is linked with grid2, hence when i scroll down grid2, the details are populated in grid1, meaning for one row selected in grid2, there could be multiple rows to be populated in grid1. Grid2 gets populated based on the date selected from the date time picker in the form and also the text of the text box.

Till this point everything looks perfect, now my problem starts with below implementation.
Now grid1 only gets populated when i click the row in grid2, but i need another screen where i need to show all details related to all the rows in grid2.
Hence in the form i shall need to take a check box eg, and when i tick the check box the new screen shall appear with all details related to grid2. when i unchek the tick box it should go back to my previous screen as it is.

I have designed another frame with a grid and trying to create multiple frames based on the rowcount of the grid2 and i am taking another scroolbox in the form, and setting these frames' parent as the scroolbox, so that when i shall tick the checkbox the scrollbox shall appear and when un-checked the panel shall appear.

How to implement this, please help with code.
0
Comment
Question by:AbhiJeet
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
8 Comments
 

Author Comment

by:AbhiJeet
ID: 39289851
any expert comment?
0
 

Author Comment

by:AbhiJeet
ID: 39291841
any solution?
0
 
LVL 10

Expert Comment

by:atul_parmar
ID: 39292204
If you are using data-aware grid e.g. TDBGrid then you should bind the another grid to the same dataset. If you are using stringgrid then you should use some data structure that is accessible to all related grids. e.g. you can maintain double dimensional array, or an array of record. or string list.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:AbhiJeet
ID: 39292639
i need to know what should be the best design approach for this requirement and how to implement the same?
0
 
LVL 10

Expert Comment

by:atul_parmar
ID: 39292718
Use a data module; all your data should reside there. Those can be in the form of tables or other data structures. Then use a controller (a class) that creates data module and different views (i.e. screens/forms), and then establishes connections  to those different views and finally returns it to the caller.
0
 

Author Comment

by:AbhiJeet
ID: 39293639
i am not using any dbgrid, i am using stringgrids.
0
 
LVL 38

Expert Comment

by:Geert Gruwez
ID: 39294113
what version of delphi and what patch are you using ?
some versions have buggy TFrame implementations
0
 
LVL 10

Accepted Solution

by:
atul_parmar earned 1500 total points
ID: 39295489
Reconsider the design I suggested, it works with string grid too. Define your data structure and store it in the data module. Following is what you can use as starting point.

unit MyData;

interface

uses
  SysUtils, Classes;

type
  TMyRecord  = class
  private
    FName: string;
    FDOB: TDate;
  public
    property Name: string read FName write FName;
    property DOB: TDateTime read FDOB write FDOB;
  end;

  TDataModule2 = class(TDataModule)
  private
    FEmpData: TList; //this stores instances of TMyRecord
  public
    procedure Add(TMyRecord);
    procedure Remove(TMyRecord);
    //navigate FEmpData using these methods.
    procedure First: TMyRecord;
    procedure Next: TMyRecord;
    procedure Last: TMyRecord;
    //
    function Count: Integer;
  end;

  TMyViewController = class
  private
    FData: TDataModule2;
  public
    procedure Bind(AGrid: TStringGrid); //traverse the FData and populate the grid
  end;

Open in new window

0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…
Suggested Courses
Course of the Month13 days, 22 hours left to enroll

800 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question