Jump to content

All Activity

This stream auto-updates     

  1. Today
  2. c0d3r

    Customizing source editor

    I created a new post for my delphi ide editor themes, you may download the files from there:
  3. c0d3r

    My Delphi IDE Editor themes

    Nature: The brick red represents: Flowers, The green: Forest, the orange/yellow: Moon/Sun, the cream white: Clouds, the dark blue background: Deep ocean, the light green (blueish, used for comments) : Rivers. the brown white space: earth. the Sky blue brace pair highlight: The Sky. The red error lines: Fire. File: c0d3r-YW-Nature.theme.xml
  4. Some one is asking for my themes, so I thought its better to create a new post to benefi any one who like them, I called them "Nature" themes, one Nature original theme and one Nature Warm theme, you may use Delphi IDE theme editor (https://github.com/RRUZ/delphi-ide-theme-editor) to apply them: Please click Like if you enjoy it. Nature warm (based on my Nature original theme): File: c0d3r-YW-Nature-warm.theme.xml
  5. Remy Lebeau

    How to completely hide application from taskbar (on launch)?

    https://stackoverflow.com/questions/16768986/how-to-hide-firemonkey-application-button-from-taskbar-xe4 https://stackoverflow.com/questions/53765725/hide-taskbar-button-in-fmx-on-windows
  6. Thank you, it sounds reasonable.
  7. No, not using a standard TPopupMenu. The menu loop is being handled by Windows (via the TrackPopupMenu API function) and you do not have any control of how it behaves - and that's how it should be; Altering the behavior of something like a menu just leads to poor usability. The fact that you've had to resort to keyboard & mouse hooks should be a hint that they don't want you messing with it. I suggest you display a non-modal form instead. You can easily make that behave like a popup menu, with your custom behavior, without raping the system.
  8. I'd like to realize a multiselection in Popup Ctrl+<Mouse click>. I've owerwrite a TPopupList.WndProc in recreated PopupList object and defined mouse and keyboard hooks on popup. So I able to mark an item as selected (checked) in popup by pressing space button, but I'm not able to make it working with the Ctrl+<Mouse click> - popup always closes. Keyboard hook: function PopupMenuKeyboardHookProc(Code: Integer; wParam : WPARAM; lParam : LPARAM): Longint; stdcall; begin try if (Code = HC_ACTION) and (wParam = WM_KEYUP) then begin if PKBDLLHOOKSTRUCT(lParam)^.vkCode = VK_SPACE then begin if Assigned(PopupList) then begin PostMessage(PopupList.Window, WM_POPUP_SPACE_KEY_MINE, wParam, lParam); wParam := WM_NULL; lParam := 0; end; end; end; finally Result := 0; end; end; I tries to process WM_LBUTTONDOWN and WM_LBUTTONUP messages, but without success, popup anyway receives WM_MENUSELECT message with the (Msg.MenuFlag = $FFFF)and(Msg.Menu = 0)), so it closes. end; How to catch it?
  9. Awesome just to get a response!! And on a Sunday playoff weekend
  10. Pat Foley

    GeocodeReverse on Android

    Hey, It must be same issue as before you need to force repaint. The FMX.locationdemo updated location data when I changed from map view back to show location data.
  11. Serge_G

    Recursive S.Proc

    Hi, Something like CREATE TABLE BOM ( ITEMNO VARCHAR(5), CHILDITEMNO VARCHAR(5), QTY INTEGER ); COMMIT; INSERT INTO BOM VALUES('AAA','AAA-1',2); INSERT INTO BOM VALUES('AAA-1','AAB',2); INSERT INTO BOM VALUES('AAA-1','AAC',3); SET TERM ^ ; CREATE OR ALTER PROCEDURE GETBOM ( ITEM varchar(5), QT integer ) RETURNS ( BOMITEM varchar(5), BOMCHILD varchar(5), BOMQTY integer ) AS DECLARE VARIABLE Q INTEGER; BEGIN FOR SELECT ITEMNO,CHILDITEMNO,QTY*:QT FROM BOM WHERE ITEMNO=:ITEM INTO :BOMITEM,:BOMCHILD,:BOMQTY DO begin SUSPEND; Q=:BOMQTY; IF (NOT BOMCHILD IS NULL) THEN BEGIN FOR SELECT BOMITEM,BOMCHILD,BOMQTY FROM GETBOM(:BOMCHILD,:Q) INTO :BOMITEM,:BOMCHILD,:BOMQTY DO SUSPEND; END END END^ SET TERM ; ^ SELECT BOMITEM, BOMCHILD, BOMQTY FROM GETBOM ('AAA', 1); Giving P.S. Note as I present my script (create table, populate, table etc.) , so it'is easy for anybody to test
  12. fcknbstrd

    LiveBindings for TComponent

    Hey everyone, I'm trying to use LiveBindings designer for connecting my Node components (TComponent) to each other (unidirectional). So I'm building a package with those components and followed the instructions on documentation, here: http://docwiki.embarcadero.com/RADStudio/Sydney/en/Tutorial:_Creating_LiveBindings-Enabled_Components + I'm overwriting CanObserve() and ObserverAdded() methods in basis node class + I'm calling Data.Bind.Components.RegisterObservableMember() for each property + I've set attributes with [ObservableMember('...')] + I've set all read-only (output) and write-only (input) to the same type "TComponentName" (because object types are not possible in LB designer) But now I'm struggling with problems: + for example: a connections between TAttributeShaderNode.Output -> TMulShaderNode.Left ... OR a connections TTexture2DShaderNode.Output -> TPixelOutputShaderNode.Input ... are forbidden + registered properties are not visible by default: i have to explicitly select them Does anyone have experiences in building components for live bindings usage? Can that even be solved? I attached the source code file. Nodes.pas
  13. Uwe Raabe

    AQTime Standard and MMX conflict?

    That might be caused by the editor context menu being triggered even for non-source modules. Will try to catch that.
  14. I just found AQTime Standard on GetIt and installed it. Found an old post on how to use it. Dr.Bob Examines... #131: Delphi XE and AQtime Standard (drbob42.com) After creating a project the first step is to right click the left pane to add modules. Doing this brings up MMX Commands > , now it's displayed over everything. I just went back and tried in Delphi and when I switch back to finish this post the MMX Command popup is still on screen. From here on out it's a fight between MMX and every other menu. You can click a second time or third to eventually get what you want. This includes Delphi menu's.
  15. Pat Foley

    GeocodeReverse on Android

    procedure TForm1.LocationSensor1LocationChanged( ... // Translate location to address if Assigned(FGeocoder) and not FGeocoder.Geocoding then FGeocoder.GeocodeReverse(NewLocation); //As described earlier, after Reverse Geocoding is completed, an OnGeocodeReverseEvent is fired. From sample. I will bring out the win 7 machine with the FMX stuff on it but probably two days out. I want to make two FMX programs this year Phone app that caches local data or least miles from North pole and miles West of home when cell towers down or out of range. A program to read topo map from Garmin 600t would nice too.
  16. 30 minutes. Are you sure your submission is taken into account ? One time I've forgotten to click on the right button. Also, check adds options, and so on.
  17. 30 what, days I've got 8 days now, never took so long before. And this time they want even changes
  18. John van de Waeter

    GeocodeReverse on Android

    Well, actually because I always doubt myself, I tried this demo on Android. Start it, enable LocationSensor. Works, adress info is correct. Leave the demo app running, start walking a couple of hundred meters. The location coordinates and map synchronizes with the position, the current address does not. Stop LocationSensor, start LocationSensor: still old address. Stop app, restart app, address info ok.
  19. Pat Foley

    GeocodeReverse on Android

    I just tried the FMX.locationdemo on my android and the current address is working on that demo. So maybe try the location demo and try edit boxes on it to see what that demo does.
  20. John van de Waeter

    GeocodeReverse on Android

    Pat, Still, no, no LocationSensor involved. I already have coordinates. I just want to lookup (georeverse) the postalcode from a set of lat/long. Meta code: 1: Input lat, long; Find postalcode using georeverse Works on both iOS and Android 2: Input another different set of lat/long; Find postalcode; Works on iOS, but gives result of first lookup (1) in Android.
  21. Pat Foley

    GeocodeReverse on Android

    Ok from your sample is your likewise event happening and is then using cached data or simply not getting new data since in background. procedure TForm1.LocationSensor1LocationChanged(Sender: TObject; const OldLocation, NewLocation: TLocationCoord2D); var URLString: String; begin // code for previous step goes here // Show Map using Google Maps URLString := Format
  22. Dear´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐ visit´╗┐ors,´╗┐ I like to notify ´╗┐you that´╗┐ new version of NextSuite is available. This update was focused on advanced styling of NextGrid and inplace editors, and improvements on HighDPI support: NextSuite includes al´╗┐ways growing set of VCL components. Most important components are: ´╗┐NextGrid6 (StringGrid/ListView replacement, written from scratch). NextDBGrid6 (Db variant of the grid) NextInspector6´╗┐ - An´╗┐ object insp´╗┐ector component. ´╗┐ ´╗┐ and many more.´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐ ´╗┐´╗┐ Few´╗┐ screenshots: ´╗┐ ´╗┐´╗┐´╗┐´╗┐´╗┐ ´╗┐ ´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐ ´╗┐´╗┐´╗┐´╗┐ Download big demo project from: http://www.bergsoft.net/downloads/vcl/demos/nxsuite6_demo.zip´╗┐´╗┐´╗┐´╗┐´╗┐´╗┐
  23. John van de Waeter

    GeocodeReverse on Android

    Pat, It's not from a webbrowser, it's from a Delphi-FMX app.
  24. Pat Foley

    GeocodeReverse on Android

    On webbrowser side try a reload. Or the equivalence of the F5 key in a webbrowser.
  25. I made a mistake here with this procedure TDECHash.SecureErase; begin ProtectBuffer(Digest^, DigestSize); if FBuffer <> nil then ProtectBuffer(FBuffer^, FBufferSize); end; And i think this version is better to build on , as i am afraid of this line "Result := Result + T", and we are accessing T elements, this could be a problem function PBKDF2(const Password, Salt: TBytes; Iterations: Integer; KeyLength: Integer; HashClass: TDECHashClass): TBytes; var Hash: TDECHash; I, J, C: Integer; BlockCount, HashLengthRounded, SaltLength: Integer; PassLength, DigestLength, BlockSize: Integer; InnerKeyPad, OuterKeyPad: TBytes; SaltEx, T, U, TrimmerPassword: TBytes; begin Hash := HashClass.Create; try // Setup parameters DigestLength := Hash.DigestSize; HashLengthRounded := DigestLength - SizeOf(NativeUInt) + 1; BlockSize := Hash.BlockSize; BlockCount := Trunc((KeyLength + DigestLength - 1) / DigestLength); PassLength := Length(Password); SaltLength := Length(Salt); SaltEx := Salt; SetLength(SaltEx, SaltLength + 4); // reserve 4 bytes for INT_32_BE(i) SetLength(T, DigestLength); // Prepare Password for HMAC calculation // PrepareKeyForHMAC; I := 0; if PassLength > BlockSize then begin TrimmerPassword := Hash.CalcBytes(Password); PassLength := DigestLength; end else TrimmerPassword := Password; SetLength(InnerKeyPad, BlockSize); SetLength(OuterKeyPad, BlockSize); while I < PassLength do begin InnerKeyPad[I] := TrimmerPassword[I] xor $36; OuterKeyPad[I] := TrimmerPassword[I] xor $5C; Inc(I); end; while I < BlockSize do begin InnerKeyPad[I] := $36; OuterKeyPad[I] := $5C; Inc(I); end; // Calculate DK SetLength(Result, BlockCount * DigestLength); for I := 1 to BlockCount do begin SaltEx[SaltLength + 0] := Byte(I shr 24); // INT_32_BE(i) SaltEx[SaltLength + 1] := Byte(I shr 16); SaltEx[SaltLength + 2] := Byte(I shr 8); SaltEx[SaltLength + 3] := Byte(I shr 0); FillChar(T[0], DigestLength, 0); // reset Ti / F U := SaltEx; // initialize U to U1 = Salt + INT_32_BE(i) // Calculate F(Password, Salt, c, i) = U1 ^ U2 ^ ... ^ Uc for C := 1 to Iterations do begin Hash.Init; Hash.Calc(InnerKeyPad[0], BlockSize); Hash.Calc(U[0], Length(U)); Hash.Done; U := Hash.DigestAsBytes; Hash.Init; Hash.Calc(OuterKeyPad[0], BlockSize); Hash.Calc(U[0], DigestLength); Hash.Done; U := Hash.DigestAsBytes; // Ui // F = U1 ^ U2 ^ ... ^ Uc J := 0; while J < HashLengthRounded do begin PNativeUInt(@T[J])^ := PNativeUInt(@T[J])^ xor PNativeUInt(@U[J])^; Inc(J, SizeOf(NativeUInt)); end; while J < DigestLength do begin T[J] := T[J] xor U[J]; Inc(J); end; end; Move(T[0], Result[(I - 1) * DigestLength], DigestLength); // DK += F , DK = DK || Ti end; finally Hash.Free; end; // Trim to the needed key length SetLength(Result, KeyLength); end;
  26. John van de Waeter

    GeocodeReverse on Android

    Hi All, In my app I tried this sample to test Geocode Reverse, to find a location's postal code. Works great on iOS, but works only once on Android. (tested on Android 6 and 9). First time lookup Geocode reverse works, but subsequent lookups give the same result as the first one. Have to kill the app and restart to have a new lookup. I tried to dispose the TGeoCoder, so it would be recreated at every lookup, but it didn't have any effect. Any ideas? tia! John
  1. Load more activity
├Ś