Jump to content

Pat Foley

Members
  • Content Count

    398
  • Joined

  • Last visited

  • Days Won

    2

Pat Foley last won the day on August 9 2023

Pat Foley had the most liked content!

Community Reputation

51 Excellent

1 Follower

Technical Information

  • Delphi-Version
    Delphi 12 Athens

Recent Profile Visitors

6094 profile views
  1. Pat Foley

    Packages and Package structure

    I had had some luck following these rules. Place only mature controls in the palette. If a control coding is changed just select Install that seems to tell the IDE to do the right thing. Needs to be 32 bit to see install. Any existing control needs removed from the designer view with ctrl X and the control gets the update as it pasted back in. This saves restarting the IDE. Check the path of control ensure that it's codebase made the trip to 290 and not using a control that using a 11 or 280 codebase. Have a sub project that allows the custom controls and forms to be compiled as standalone allowing modular construction getting custom controls working. then the main project uses the forms that have the controls placed on them.
  2. My machine shows the same but shows 131.xxx when compiled as 64 I set the kernel32 to Kernelbase. My swapfile is hard set at 2917 or so.
  3. 1. Read the "hints" on the error your compiling for "32" 64 with version 35.0 compiler switched to using a D11 path. I would say its a proj copied from d11 codebase to to a d12 codebase that kept the d11 proj guid.
  4. Pat Foley

    SetStyle overloads are not compatible

    Delete
  5. Pat Foley

    Delphi Documentation website issues

    My tool suspects the load.php? business most. We will see what happens.
  6. Pat Foley

    Delphi Documentation website issues

    They could get a free trial of a Tool to resolve issue here https://www.idera.com/ppc/precise/performance-intelligence-from-click-to-storage/ That product may provide a remedy.
  7. Pat Foley

    Can Control Elements have "EventHandlers"?

    1. form := GetParentForm(AControl); 2. example speedbutton click overridden to allow click to jump to control on another form. TpfJumper = class(TSpeedButton) private FgotoName: string; FgotoControl: TControl; procedure SetgotoControl(const Value: TControl); procedure SetgotoName(const Value: string); // procedure onclick; protected procedure Paint; override; public property gotoControl: TControl read FgotoControl write SetgotoControl; property gotoName: string read FgotoName write SetgotoName; published { Published declarations } procedure Click; override; end; 3. The events for the Control. Procedure TpfJumper.Paint; begin with Canvas do begin brush.Color := clMoneyGreen; Point(85,21),Point(17,0)]); polygon([Point(68,0),Point(68,7),Point(85,7),Point(85,34),Point(68,34),Point(68,41), Point(0,21),Point(68,0)]); end; end; procedure TpfJumper.click; begin inherited; gotoControl.Show; end; 4. In the designer you can assign several controls to one event. In the handler cast the sender as needed.
  8. Pat Foley

    "Death to WITH" in your Delphi Code

    How about qualified with. procedure TMyForm.UpdateInventoryItem(const NewQty: Integer); procedure &With(A: TDataModule; B: TTable; const NewQty: Integer); begin B.Edit; B.FieldByName('Qty').AsInteger := NewQty; B.Post; end; begin &With(dmStoreInventoryData, dmStoreInventoryData.tblUpdateItemForStore, NewQty); end;
  9. Pat Foley

    How do I return to the 'Constructor'??

    How about a second machine for the user. They can view old work flows to gain insight on the work flows they are working on presently. This second machine is simply left on so it doesn't need to download the "knowledge base" each time a user wants to know how a work flow was implemented last time. Since a second machine and screen is used you could charge additional license fees. If the user can get more done each day by running a second application on second machine it should pay off since first machine used for work orders and IT work done concurrently on second machine albeit losing their "knowledge base" view when backing up. In short, Historian functions adds a lot of overhead in bandwidth and screens!
  10. Pat Foley

    How do I return to the 'Constructor'??

    How about procedure TChangeForm.dostuff(inDBName, inDBTable, inTable: Variant) begin if not assigned(Changeform) then Changeform := Tchangeform.create(Application); // hookup up the incoming // end;
  11. Pat Foley

    Issue with dynamic panel creation

    Here's example of finger measure applied*. The example refactored your code into a mypanel. This code surfaces the numbers to aid in sizing. *finger measure ~ 13 mm grid layout size. I added a panel inside the ScrollBox unit Unit8; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.UITypes, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ToolWin, Vcl.ComCtrls, Vcl.ExtCtrls; type TmyPanel = class(TPanel) const // 96 dpi ~ 25.4 mm * 4 baseFinger = 96 div 2; baseFatFinger = 3 * 96 div 2; public TopOffset: Integer; Finger: Integer; class var UsedHeight: Integer; procedure Paint; override; procedure WMSIZE(var message: TWMSIZE); procedure SetUp(AParent: TWinControl; const AColor: TColor; const Offset: Integer; const AAlign: TAlign); end; TForm8 = class(TForm) ScrollBox1: TScrollBox; ToolBar1: TToolBar; Button3: TButton; Button4: TButton; Button1: TButton; Panel1: TPanel; procedure Button4Click(Sender: TObject); end; var Form8: TForm8; implementation {$R *.dfm} // Let's pass ScrollBox1 using ScrollBox in SetUp procedure parameter} //var // ScrollBox: TScrollBox; procedure TForm8.Button4Click(Sender: TObject); var panel : TmyPanel; TagNu: NativeInt; Prnt: TWinControl; Aln: TAlign; begin Prnt := panel1;//ScrollBox1; Aln := alTop;// alNone; panel := TmyPanel.Create(Self); TagNu := (Sender as TControl).Tag; Case Tagnu of 0: panel.SetUp(Prnt, clSkyBlue, 8, aln); 1: panel.SetUp(Prnt,clMoneyGreen, 4, aln); 2: panel.Setup(Prnt, clCream, 2, aln); End; end; { TmyPanel } // Note how only current numbers are used and top offset used for naming not used for scrolling! procedure TmyPanel.Paint; begin inherited; canvas.TextOut(10,10,format('%s class Top %d Rect.Top %d',[Name, UsedHeight, BoundsRect.Top])); end; procedure TmyPanel.SetUp(AParent: TWinControl; const AColor: TColor; const Offset: Integer; const AAlign: TAlign); begin Parent := AParent; self.Color := AColor; ParentBackground := False; // moved top to here to avoid firsttime flag // and when align = alNone sets panel top else // size the parent to fit with resize event finger := baseFinger; Top := UsedHeight + 2 * finger; Inc(UsedHeight, (Offset+1) * finger); TopOffset := UsedHeight; AParent.Height := TopOffset; Name := 'MyPanel'+'_'+ UsedHeight.ToString; Caption := '';//Name;// + ' ' + UseCount.ToString; Height := Offset * finger; Left := 2 * finger; Width := 200;//aParent.Width - 34 - Left; Align := AAlign; show; // if ScrollBox1.height > anOwner.Height div 2 then // begin // ScrollBox1.AutoSize := False; // ScrollBox1.Height := anOwner.Height div 2; // end; //e end; procedure TmyPanel.WMSIZE(var message: TWMSIZE); begin //Finger adjusted here finger := basefinger * {DPI/96} 1; end; end.
  12. Pat Foley

    Android - debugging

    If 12 acts up I been restarting it several times just to freshen the file caches MRU. A pinched network cable caused some issues last spring.
  13. Pat Foley

    Android - debugging

    Mm, What happens using F7 vs F9 key to run the program.
  14. Pat Foley

    Android - debugging

    Hey, Where's the blue dots I would check in project manager that debug is bolded. Pat
  15. Oops! Should stuck with mouseover events to allow a "Proper" FocusRect to be drawn when over the area or subtracted the Control's ClientOrigin.Y
×