Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Stano last won the day on May 31

Stano had the most liked content!

Community Reputation

118 Excellent

1 Follower

Technical Information

  • Delphi-Version
    Delphi 11 Alexandria

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. I have found that for me, the best method to use in this case is the small incremental steps method. Per partes. That way the solution to the problem gradually emerges from the depths. Looks like I'm on the right track. Unfortunately, I can't explain it any better. I prefer classes for the record. I'm very fond of generics. I don't have to deal with performance. Thanks to all involved for trying to help me.
  2. I don't understand part of the case. It doesn't say "condition". case condition of That is why I do not understand the whole proposal either.
  3. 1) Let's just look at the left part: group round It's a familiar scheme. Nevertheless, I find it very difficult to explain. ===== 2) I have the basic data written in the application. I have specified: teams in the first "Group round" number of Group round dynamically created graph for KO system That's all. ===== 3) In the meantime, I've decided that it will be good if all nodes in the Group round will have CheckBoxes. At the level of 0 (Group) they have no role 1 check mark means the advancing team ===== 4) The user's task is to move the advancing team to the adjacent right tree. If this is OK, the user will confirm this. Based on that, I will generate the teams in groups for that round. Here we handle this with the WriteToDB function ===== 6) It is up to the user whether to have it generated: matches (including rematches) list of players in each match These two points are not the task of this solution. Nor is entering data for the matches part of this task. ===== 7) I need to create the conditions to be able to: ReadFromDB: populate individual trees - I don't see a problem here hide unnecessary Group round in the code to accurately identify the individual rounds. So that I can set properties for them. For example: hidden, inaccessible, active. I don't need to identify the teams HERE. Then trees are enough for me. At least that's what I think. Write the result using WriteToDB 8) I'm not dwelling on the DB structure and working with it right now. That will follow smoothly from the problem itself. It's beyond the scope of this problem. ===== 9) The challenge is to design for point 7) correctly: data structures classes and their functions/methods Only the names of the functions, which will explain their operation - are sufficient.
  4. Stano

    Form Creation

    I search, I search and I don't see it anywhere Put your minimum code here. So everyone here is just guessing.
  5. Stano

    Form Creation

    The first form created is always the main one. We don't know how you create Form1.
  6. Something like that. To make it easier for you to comment.
  7. Team competition - how to do it Please advise. I'm sure there are some good ideas here. I have a rough idea, but it's severely lame. I'm asking for your suggestion on how to solve it and a suggestion for classes. That is, a methodology. I am not asking for the actual implementation. Problem to be solved: competition of cooperatives. Specifically football. It's in two stages. I want to solve each stage separately. The pictures tell more. 1) The first picture shows what the individual trees will look like in the elimination rounds. The elimination rounds, where everyone plays everyone The winners in the round will be dragged into the right tree 2) KO system All actions are always confirmed only for complete data and only once - the "Apply" button I will write everything in the DB.
  8. I recommend that you visualise the whole situation. That is the most important thing to do. This will help you to understand the problem. Since you can't do it in your head, and neither can I, you have to sketch it out. Paper is inappropriate for this task. The best I know is the DIA program. It's not finished and it's already dead. It does its job more than well. I'm confident that you will move forward with this technique. I personally use it to visualize problems: DIA: DB bindings, Classes: dependencies (links), their structure - as needed Word, text editor Excel FreeMind
  9. I was very struck by this line. Why do you have retyping there? What happens if fSpawnIntervalChanges) is not TReplayChangeSpawnInterval? Also, I don't like the comparison character = there These are very gross, severe errors in the code!!! And do see my signature!
  10. Stano

    Delphi Professional Database Connectivity

    I know that. My post was a reaction and Fr0sT.Brutal
  11. Stano

    Delphi Professional Database Connectivity

    I don't know if that's still the case. When I bought Adon(?) for FrireDAC, the supplier wrote to me: Professional has everything as higher versions. Adon only unlocks access to multiple access functions.
  12. Stano

    Unsorted classes

    I've already found the bug. I had the word protected after the procedure declaration. On one line.
  13. Stano

    SQLite varchar field overflow

    Can't point 2.1 be replaced by overwriting the field size in the table? I didn't have a problem with it.
  14. Stano

    Delphi Professional Database Connectivity

    You are not alone in this. I've been able to afford to replace the FireDAC on my 2 small projects.
  15. Stano

    Unsorted classes

    I have three very similar classes. For one is an announcement: Unsorted classes -> TTableGroup is not sorted This is not true. I don't see a reason for it and I can't find a cause. When sorted, it looks like this: TTableGroup = class(TVstTableData) strict private FcbxFilterByCountry: TAdvComboBox; FFieldFilterByCountry: TList<TField>; FFreeMember: TFreeMember; FGroupData: PTableData; FMemberData: PTableData; FMemberID: TList<Integer>; FShowDates: TAdvOfficeCheckBox; procedure FilterByCountryChange(Sender: TObject); procedure GetComponents(const Form: TForm); procedure GetFMemberIsInGroup; protected strict protected FMissingMember: TList<PVirtualNode>; FqryFilterByCountry: TFDQuery; FQryIns: TFDQuery; procedure CreateSQL; override; procedure FillFilterByCountry; procedure SetParams; virtual; abstract; protected procedure GetForm; procedure SetEvents; procedure SetMemberInGroupData(const I, PKeys: Integer; const MemberData: PTableData); procedure SetVst; procedure ShowDatesClick(Sender: TObject); procedure VstChange(Sender: TBaseVirtualTree; Node: PVirtualNode); procedure VstCompareNodes(Sender: TBaseVirtualTree; Node1, Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer); procedure VstDragAllowed(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; var Allowed: Boolean); procedure VstDragDrop(Sender: TBaseVirtualTree; Source: TObject; DataObject: IDataObject; Formats: TFormatArray; Shift: TShiftState; Pt: TPoint; var Effect: Integer; Mode: TDropMode); procedure VstDragOver(Sender: TBaseVirtualTree; Source: TObject; Shift: TShiftState; State: TDragState; Pt: TPoint; Mode: TDropMode; var Effect: Integer; var Accept: Boolean); procedure VstFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode); procedure VstGetNodeDataSize(Sender: TBaseVirtualTree; var NodeDataSize: Integer); procedure VstGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: string); procedure VstIncrementalSearch(Sender: TBaseVirtualTree; Node: PVirtualNode; const SearchText: string; var Result: Integer); procedure VstInitNode(Sender: TBaseVirtualTree; ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates); public constructor Create(const ANavigator: TjstFDNavigator); override; destructor Destroy; override; procedure FillVst; override; property FreeMember: TFreeMember read FFreeMember write FFreeMember; end It's created protected there, which I don't want. The whole unit is attached RelationTree.pas