ralfiii

Forum Replies Created

Viewing 20 posts - 61 through 80 (of 82 total)
  • Author
    Posts
  • in reply to: TsSpeedButton not transparent ?!?!? #47213
    ralfiii
    Participant

      Thanks, that works perfectly!

      in reply to: Shade speedbutton sideways? #47203
      ralfiii
      Participant

        After thinking for some time I found a “solution”.

        Actually it's not a solution, it's just a request for a more general solution for such problems:

        ####

        Now that I have to make an app with a cool design I VERY often would need a fully transparent button (TsButton, TsSpeedButton or whatever…) combined with a set of images (+ an optional caption).

        When you hover the mouse over it or press it, it simply shows the corresponding images just like TsButton where we can use HotImageIndex, PressedImageIndex etc.

        But in any case it does NOT show it's borders, it only shows the images.

        This way we could easily create buttons that have odd shapes. You simply get partly transparent png images for the normal/hover/pressed-state from a designer and wire it to the transparent button.

        (in reality the buttons are rectangular, but the user only sees the image).

        This is something that is REALLY missing in the AC-pack

        ralfiii
        Participant

          I tested it and it works.

          You're a genious! :a3:

          Thanks!!!!

          I attach the file just in case anybody wants it as a reference.

          ralfiii
          Participant
            'Support' wrote:

            I'm sorry, you are right. Some errors exists in my previous code. Try this

            Still doesn't work.

            Don't I have to assign the Painting-rect?

            I tried

            Code:
            procedure TTest.Paint;

            if ParentBGInfo.BgType btUnknown then
            begin // Parent is not AlphaControl
            ParentBGInfo.BgType := btUnknown;
            ParentBGInfo.PleaseDraw := False;
            ParentBGInfo.R:=Rect(Left, Top, Left+Width, Top+Height);
            SendMessage(Parent.Handle, $A100{SM_ALPHACMD}, MakeWParam(0, 34{AC_GETBG}), LPARAM(@ParentBGInfo));
            end;

            But this also didn't work.

            AND: If I simply clear ParentBGInfo

            FillChar(ParentBGInfo, sizeof(TacBGInfo), 0);

            before I do anything with it, nothing happens anymore, then the component isn't transparent even when placed on a panel.

            Somethings terribly wrong here.

            If you like I can send a tiny demo application, so you could correct it in there.

            ralfiii
            Participant

              I think I will simply use a “UseAlphaControls” define.

              Thanks for your help!

              ralfiii
              Participant

                I suppose you mean LPARAM(@BGInfo), right? (the @-symbol was missing)

                hmmm… still, it's not really working well.

                If I place the control on a TsPanel then it's really transparent.

                If I place it directly on a Form then the form is skined but the control itself remains opaque.

                If I place it on a TsPanel which is transparent because the BevelOuter is set to bvNone then it's also opaque.

                And the line

                ParentBGInfo.Color := Parent.Color

                doesn't compile as Parent.Color seems not to be available.

                Here's the source with both paint methods, selectable with a define:

                Code:
                {$DEFINE Independent}

                {$IFDEF Independent}
                uses Graphics, Windows;
                {$ELSE}
                uses Graphics, Windows, sGraphUtils, sConst;
                {$ENDIF}

                {$IFDEF Independent}
                type
                PacBGInfo = ^TacBGInfo;
                TacBGType = (btUnknown, btFill, btCache, btNotReady); // Returned by control type of BG
                TacBGInfo = record
                Bmp : Graphics.TBitmap;
                Color : TColor; // Color returned if btFill is used
                Offset : TPoint; // Offset of bg, used with Cache
                R : TRect; // Rectangle used if PlsDraw is True
                BgType : TacBGType; // btUnknown, btFill, btCache
                PleaseDraw : boolean; // Parent must fill rectangle(R)
                DrawDC : hdc; // Device context for drawing, if PleaseDraw is True
                end;

                // from sMessages.pas
                var
                SM_ALPHACMD : LongWord;
                const
                AC_GETBG = 34;
                {$ENDIF}

                procedure TTest.Paint;
                var
                ParentBGInfo : TacBGInfo;
                begin
                Canvas.Lock;

                {$IFDEF Independent}
                Perform(SM_ALPHACMD, MakeWParam(0, AC_GETBG), LPARAM(@ParentBGInfo));
                if ParentBGInfo.BgType btUnknown then
                begin // Parent is not AlphaControl
                ParentBGInfo.Color := clRed; // Parent.Color is not reachable ?!?!?
                ParentBGInfo.BgType := btFill;
                end;
                {$ELSE}
                GetBGInfo(@ParentBGInfo, Parent); // Receive a BG information from parent
                if ParentBGInfo.BgType = btCache then
                begin // If BG is accessible as bitmap
                BitBlt(Canvas.Handle, 0, 0, Width, Height, ParentBGInfo.Bmp.Canvas.Handle,
                Left + ParentBGInfo.Offset.x, Top + ParentBGInfo.Offset.y, SRCCOPY);
                end
                else // Else just filled by received color
                FillDC(Canvas.Handle, Rect(0, 0, Left+Width+1, Top+Height+1), ParentBGInfo.Color);
                {$ENDIF}

                // Data output
                Canvas.rectangle(width div 5, Height div 5, 4*(width div 5), 4*(Height div 5));

                Canvas.UnLock;
                end;

                {$IFDEF Independent}
                initialization
                SM_ALPHACMD := RegisterWindowMessage('SM_ALPHACMD');
                if True or (SM_ALPHACMD < $C000) then SM_ALPHACMD := $A100;
                {$ENDIF}

                in reply to: Toolbar with right-aligned buttons? #47062
                ralfiii
                Participant

                  ok, thanks!

                  ralf

                  in reply to: Skinning of dynamically created controls? #47045
                  ralfiii
                  Participant
                    'Support' wrote:

                    Hello

                    You can try this code

                    Code:
                    sSkinProvider1.Adapter.AddNewItem(sBtn);

                    As this is the main form I don't have a SkinProvider there, only a SkinManager.

                    Is “Adapter” (or similar) also available from a TsSkinManager-Component?

                    Or should I place a SkinProvider on the mainform also anyway? (I thought I only need SkinProvider on additional forms)

                    Thanks!

                    in reply to: Problem with changing Parent #46537
                    ralfiii
                    Participant

                      I just downloaded and installed version 7.48 and it solves the problem.

                      You're the man!!!!

                      Thanks a lot!

                      in reply to: Problem with changing Parent #46527
                      ralfiii
                      Participant

                        True, in this case it helps, but in my real-life application I am having SkinProviders there and it still fails.

                        Unfortunately the “real” app is much too big to post it here.

                        Can you please have a look into that issue?

                        Thanks,

                        Ralf S.

                        'Support' wrote:

                        Hello

                        Thank you, I see this issue and will research it.

                        Try to place TsSkinProvider component, I think it helps.

                        in reply to: Button with vertical caption #46511
                        ralfiii
                        Participant
                          'Support' wrote:

                          You uses OnPaint event?

                          I created a TPanel-decendant with an overwritten Paint-method.

                          in reply to: Button with vertical caption #46462
                          ralfiii
                          Participant

                            Hey!

                            Thanks for your response, but I've implemented a neat vertical button in the meantime.

                            So you can save your time for enjoying the sunny weather 😉

                            Thanks anyway!

                            Ralf

                            'Support' wrote:

                            Hello Ralf

                            This feature should be added specially. I have added it in ToDo list, but can't promise a quick implementation.

                            in reply to: Animated sPanel? #46418
                            ralfiii
                            Participant
                              'HeDiBo' wrote:

                              You're amazing: that solved it

                              Is there a similar function to slide out a panel (I don't mean the TsFrameBar, but an animation function that will slide a panel out of nothing in a given direction). If you look at my screen shot, you can see that it would look even nicer if the panel would slide out of the button and back in again.

                              Did you implement such an iPhone-like window-that-slides-out function?

                              If yes: Could you provide some code and/or even a demo-app?

                              I need to implement exactly the same thing now, and it's always nice if you don't need to re-invernt the wheel…

                              Thanks in advance!

                              Ralf

                              in reply to: Skinning of own components #46344
                              ralfiii
                              Participant
                                'Support' wrote:

                                Ralfii, if you want we can talk later via ICQ or Skype, maybe some solution will be found.

                                I've sent you my skype-ID via PM

                                Thanks!

                                in reply to: Skinning of own components #46299
                                ralfiii
                                Participant
                                  'HeDiBo' wrote:

                                  Since TJvRollOut descends from TCustomPanel, you might try to add it to the list of ThirdParty controls as a Panel component.

                                  Doesn't work as then the title area is not draw unless you hover the mouse over it.

                                  (see attached picture, right pic. made after hovering over)

                                  in reply to: TTabSet-Replacement would be nice #45332
                                  ralfiii
                                  Participant
                                    'Support' wrote:

                                    I think, it's possible.

                                    Hey great!!!

                                    Thanks a lot in advance!

                                    in reply to: TTabSet-Replacement would be nice #45271
                                    ralfiii
                                    Participant
                                      'Support' wrote:

                                      Hello

                                      I'll add this topic in ToDo list, but I can't say when skinning of TabSet will be implemented.

                                      Great!

                                      Take your time, it's not urgent, I am planning the release by the end of this year, so I have plenty of time…

                                      If you simply skin TTabSet, would the tabs have a mouse-over effect?

                                      If not it would be great if you could consider an own component that supports that. Would look so much better…

                                      Thanks again, really a great component package!

                                      in reply to: Mainform not resizable (bsDialog vs bsSizable) #45224
                                      ralfiii
                                      Participant
                                        'Support' wrote:

                                        Remove biMaximize from BorderIcons.

                                        You're the man!!!

                                        Thanks!

                                        in reply to: AlphaSkins not compatible with TJvFormStorage? #45159
                                        ralfiii
                                        Participant
                                          'Support' wrote:

                                          Thank you.

                                          What is version of your JVCL?

                                          Your demo working well, but my Exe don't work after recompiling (form position does not saved/restored). How can I activate TJvFormStorage component?

                                          Uups, sorry, tht was written with a patched JVCL version that doesn't require an appstorage-component to store the window position.

                                          I've attached a new version that brings the skin with it and also has the formstorage set up properly.

                                          (you only need to drop a TJvAppRegistryStorage on the form, set the property “Root” to “SoftwareAcTestApp” (as an example) and set the property “AppStorage” of the JvFormStorage to it.

                                          All done in the sample.

                                          Thanks in advance for your help.

                                          in reply to: Remember skin-path in Demo-App #45068
                                          ralfiii
                                          Participant
                                            'Support' wrote:

                                            You should store and load 3 properties of the TsSkinManager component in this order : SkinDirectory, SkinName, Active

                                            That's no problem for my own applications, I was just suggesting to also do that in the demo application that comes with AlphaSkins.

                                          Viewing 20 posts - 61 through 80 (of 82 total)