Jump to content

Ian Branch

Members
  • Content Count

    1352
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by Ian Branch

  1. Ian Branch

    Ummmm. What!!

    Hi Dave, No it didn't happen on a new project. And it isn't happening on/in all my projects in the proj Gp. But it is happening in more than one. 😞 I can't really post the form/project as it has 3rd Pary components on it and there is proprietary information in it. Whilst I could mask the information, it would still be dependant on you having the 3rd Party components to open the unit. What's a little more annoying is that I don't know how long this 'isssue' has existed and therefore how long existing FormShow procedures in the relevant Apps hasn't been functioning. 😞 Ian
  2. Ian Branch

    GetIt installation does not work

    My KSVC update seemingly installed OK but when I went to update my project it couldn't find some KSVC components. I had to de/re install KSVC and all was good. Does anybody know what the KSVC update changed/updated? Regards, Ian
  3. Hi Team, D12. What would/could prevent me being able to widen my MainForm? There are no Constraints and the form is sizable. It is a Normal form. I can change the height OK, but not the width. 😞 Any thoughts/suggestions appreciated. Regards & TIA, Ian
  4. Ian Branch

    Mainform won't change width...

    Found it! One of the components on the form ahd constraints for some reason. All fixed now. Thanks to all for your input. Regards, Ian
  5. Ian Branch

    Mainform won't change width...

    Hi Brian, I could be wrong, this is not in code, this is in the IDE at Design time. Ian
  6. Hi Team, Books have been written about what I don't know about threading... 😉 I have experimented with Anonympus threads. Is it possible to prevent the App doing anything except being moved, and parhas resized, while a thread is running? Regards & TIA, Ian
  7. Ian Branch

    Preventing and allowing things to happen in a Thread???

    Because I still want them to be able to move and resize the App/Form while the thread is running. If I do it in the main thread the form becomes unresponsive.
  8. Ian Branch

    Delphi 12: Invalid class typecast

    Well done to Uwe, Peter, & any others, for seeing this issue through. Ian
  9. Ian Branch

    Procedure/Function Commenting..

    Hi Team, Like most of us I have my own local pattern procedure/function library. I have been commenting them like this: What this gives me then is a dropdown when I hover over the procedure/finction in my code that looks something like this: All very handy and a useful reminder of the procedure/function definition. I forget where I got this from. 😞 Can somebody point me to where this style of documentation/technique is documented please? Regards & TIA, Ian
  10. Ian Branch

    Procedure/Function Commenting..

    They don't appear to have a D12 version yet. 😞
  11. Ian Branch

    Procedure/Function Commenting..

    Excellent! Thanks Dalija. Regards, Ian
  12. Of course, all of this is dictated by available Budget and/or Risk/Impact analysis.
  13. Here's a thought. What impact, if any, has this outage had on the next update to D12??
  14. Ian Branch

    Testing a Semaphore??

    Hi Team, Delphi 12. I am trying my hand at Semaphores. Never touched them before this. ATT I have the following code: // // Create the named semaphore (if it doesn't already exist) GlobalSemaphore := TSemaphore.Create(nil, 1, 1, 'DBiAdminSemaphore'); // try // if GlobalSemaphore.Acquire then begin I understand that if the Semaphore 'DBiAdminSemaphore' already exists, it won't be created again. If it already exists, I want to test for its existance, hence the thought of Acquire, but it seems Acquire doesn't return a Boolean. How do I test if the Semaphore already exists? The objective here is to prevent the following code exceuting if the Semaphore exists. Regards & TIA, Ian
  15. Ian Branch

    Testing a Semaphore??

    Hi Jon, Tks. The code is in the MainForm.FormShow Event. The App is accessed by multiple Users via ThinFinity (WEB), RDP & LAN. If one of the App has the GlobalSemaphore created, I don't want any of the other Apps running this piece of code. I don't know that I need to use Acquire at all? If WaitFor(1) works as suggested, I will be fine. Regards, Ian
  16. Hi Team, I have a table with a blob field that contains jpeg files of approx 256kB size. I want to reduce their size to around 128kB size. Thus reducing the overall table size. Iterating through the table isn't an issue, I need to read the image, reduce its physical size then write it back to the field. Preferably without too much degradation. Thoughts/suggestions appreciated. Regards & TIA, Ian
  17. Ian Branch

    wuppdi Welcome Page for Delphi 11 Alexandria?

    Hi Guys, FWIW, I am using both without issue in D12. Ian
  18. Ian Branch

    docwiki

    Getting to be a habit... 😞
  19. Ian Branch

    Character Problem

    No need to apologise, we have all done something like that in our lifetimes.....
  20. Ian Branch

    Screen Capture a Form??

    Hi Team, Need some help. Using D12, 32bit App. I would like to capture just the current form, in some format, and send it to the clipboard, so the User can then paste it into an email. I found this code: procedure TMainForm.CaptureDialogToClipboard(WindowHandle: HWND); var dcWindow: HDC; dcMem: HDC; bmp: TBitmap; begin dcWindow := GetDC(WindowHandle); try dcMem := CreateCompatibleDC(dcWindow); try bmp := TBitmap.Create; try bmp.Width := GetSystemMetrics(SM_CXSCREEN); bmp.Height := GetSystemMetrics(SM_CYSCREEN); SelectObject(dcMem, bmp.Canvas.Handle); PrintWindow(WindowHandle, dcMem, PW_CLIENTONLY); // Adjust options as needed Clipboard.SetAsHandle(CF_BITMAP, bmp.Handle); finally bmp.Free; end; finally DeleteDC(dcMem); end; finally ReleaseDC(WindowHandle, dcWindow); end; end; Which I think will do the job, but I can't find out where/how PW_CLIENTONLY is declared/defined. What unit do I need to add??? Regards & TIA, Ian
  21. Ian Branch

    Screen Capture a Form??

    Hi Team, I came across this code and it works straight-up. I just need to do some tweaks: procedure ScreenShot(activeWindow: bool; destBitmap: TBitmap); var w, h: integer; DC: HDC; hWin: Cardinal; r: TRect; begin if activeWindow then begin hWin := GetForegroundWindow; dc := GetWindowDC(hWin); GetWindowRect(hWin, r); w := r.Right - r.Left; h := r.Bottom - r.Top; end else begin hWin := GetForegroundWindow; dc := GetDC(hWin); w := GetDeviceCaps(DC, HORZRES); h := GetDeviceCaps(DC, VERTRES); end; try destBitmap.Width := w; destBitmap.Height := h; BitBlt(destBitmap.Canvas.Handle, 0, 0, destBitmap.Width, destBitmap.Height, DC, 0, 0, SRCCOPY); finally ReleaseDC(hWin, DC); end; end; procedure TMainForm.Button1Click(Sender: TObject); var path: string; b: TBitmap; begin // b := TBitmap.Create; try ScreenShot(TRUE, b); Clipboard.SetAsHandle(CF_BITMAP, b.Handle); b.SaveToFile(GetDesktopPath + 'Screenshot_1.bmp'); finally b.FreeImage; FreeAndNil(b); end; // end; Thank you all for your input. Appreciated. Regards, Ian
  22. Ian Branch

    Screen Capture a Form??

    Yes, I am playing with it att with mixed results.
  23. Ian Branch

    Screen Capture a Form??

    Hi Team, I'm not having much luck here. I now have this code: procedure TMainForm.CaptureDialog(WindowHandle: HWND; SaveToClipboard: Boolean; FileName: string = ''); var dcWindow: HDC; dcMem: HDC; bmp: TBitmap; begin dcWindow := GetDC(WindowHandle); try dcMem := CreateCompatibleDC(dcWindow); try bmp := TBitmap.Create; try bmp.Width := GetSystemMetrics(SM_CXSCREEN); bmp.Height := GetSystemMetrics(SM_CYSCREEN); SelectObject(dcMem, bmp.Canvas.Handle); // Adjust PrintWindow options as needed PrintWindow(WindowHandle, dcMem, $1); if SaveToClipboard then begin Clipboard.SetAsHandle(CF_BITMAP, bmp.Handle); end; if FileName <> '' then begin bmp.SaveToFile(FileName); end; finally bmp.Free; end; finally DeleteDC(dcMem); end; finally ReleaseDC(WindowHandle, dcWindow); end; end; procedure TMainForm.Button1Click(Sender: TObject); begin CaptureDialog(Application.ActiveFormHandle, False, GetDesktopPath+'ScreenCapture2015.bmp'); end; When I click the button on the form I get an 'image' saved OK but it is all white and looks suspiciously like an all white screen. 😞 Thoughts/suggestions appreciated. Regards & TIA, Ian
  24. Ian Branch

    Help with 'Continue' pls.

    Hi Team, Using D12. It may be my missunderstanding but.. I have the following code: Suppliers.First; // while not Suppliers.eof do begin // sSelected := Suppliers.FieldByName('SupplierCode').AsString; sDescription := Suppliers.FieldByName('SupplName').AsString; // Parts.Close; Parts.SQL.Clear; Parts.SQL.Text := 'Select * from Parts where SupplierCode = ' + quotedStr(sSelected) + ' and BusCode = ' + QuotedStr(sBusCode); Parts.Prepare; Parts.Open; // if Parts.eof then begin // TaskMessageDlg('No parts available!', 'There are no Parts on record for Supplier - ' + sDescription + ' at location ' + sLocation + '.', // mtInformation, [mbOK], 0) Label1.Caption := 'There are no Parts on record for Supplier - ' + sDescription + ' at location ' + sLocation + '.'; // Suppliers.Next; // Continue; // end else begin // Omitting the Suppliers.Next for the moment, I allways thought that a Continue would have automatically caused Suppliers to move to the next record by virtue of the 'while not Suppliers.eof do'. In my case of the code above, it doesn't, I had to insert the Suppliers.Next; line. Was my understand incorrect or is there some other explanation? Regards & TIA, Ian
  25. Ian Branch

    Help with 'Continue' pls.

    Thanks Guys, It's surprising I have operated under this missunderstanding for so long.... 😞 All good now. Again, thank you. Regards, Ian
×