UsingVisual Components Professional or Premium, you can model new components and create your own libraries of components. For example, you can import CAD files for machines, model them to simulate how they work, and then use them in different layouts to sell, visualize, integrate, and optimize factory solutions.
Component modeling is flexible. That is, there are many approaches to model a component from start to finish. You can keep things simple by using a component from our eCatalog as a template for modeling a new component, such as a robot. You can also use built-in wizards to speed up the modeling process. For example, we have tools that quickly make conveyors, positioners, IO devices, and robots production ready with a few clicks.
that sounds like a good idea, thank you. Until now I have just worked with the path and volume sensor, but i will give it a try. In my opinion the difficulty is in the configuration of the python script of the different components.
The components will be released from a feeder and run on a conveyor line. The components will then pass a sensor (which should be a RFID writer) and get different numbers which in return will be linked to different actions (defined in the PLC application). The components will then pass a RFID reader just before a conveyor divert. Depending on which number the RFID reads out the component it will be guided to the defined direction.
I will work on that and give u a feedback.
You have the option of using a RayCast Sensor with a path behavior. In that case, make sure the emission point is offset or not touching a surface, e.g. the reference frame is not on the same plane as geometry. That could accidentally trigger sensor in some cases.
You also have the option of modeling a component that can function as an RFID reader or writer. For example, you could write a simple script that uses rayCast method in vcApplication to emit several rays or a radius detection method, which I do not recall if it is vcApplication or vcMatrix.
Even if this solution works pretty well for me now, Visual Components should be however have stuff like this integrated. Just managing this with a RoutingRule like the CrossingConveyor does will work, but is in my opinion not close enough to the real machine behaviour.
I would like to subclass TToolBar with another class called MyTToolBar so that I can override a method. I'm new to Delphi, but after two hours of trying various methods, I can't get MyTToolBar to be used instead of TToolBar. I can't be the first person who's wanted to override a method on a visual component class.
I come more from an Xcode background where subclassing a visual component is easy. You create a subclass (e.g., MySubclass) of a parent class (e.g., MySuperClass) and then just simply assign the subclass in the Interface Builder view of Xcode. The subclass is automatically recognized and used.
After adding a TToolBar to a TForm, it doesn't seem possible to change the class. I tried through the Object Inspector as well as through the .PAS source code file. If I change the class in the .PAS file, I get an error message saying the toolbar "should be of type Vcl.ComCtrls.TToolBar but is declared as MyTToolbar. Correct the declaration?" This just seems silly...
Oh, and I've also used the new component wizard from selecting: File -> New -> Other -> Delphi Projects -> Delphi Files -> Component. I select the ancestor for MyTToolBar as TToolBar and tell it to register in the 'Samples' palette page. However, it doesn't appear in the 'Samples' page.
The closest equivilent to your XCode approach is to use an "interposer" class in Delphi. Basically, you do not change the code that the IDE creates for the standard TToolBar usage. You instead declare a new class that derives from the standard TToolBar component but is also named TToolBar and you make it visible to the compiler after the standard TToolBar has been declared. Whichever TToolBar class is last seen by the compiler will be the actual class type that gets instantiated whenever the TForm DFM is streamed.
This approach works on a per-project basis only. If you want to use your custom TToolBar class in multiple projects, then you are better off installing it into the IDE, like @KenWhite describes, and use it instead of the standard TToolBar. Go back to naming it TMyToolBar (or whatever), do not name it TToolBar anymore since it is not going to be used as an interposer. Make sure the Package is marked as "Runtime and Designtime" in its Project Options (creating separate runtime-only and designtime-ony Packages is outside the scope of this discussion). TMyToolBar will be available at design-time for you to drop on your TForm like any other component. If it is not, then you did not set it up correctly.
The way to do this is to create your own descendant component, and actually install it into the IDE in a design-time package. You can then drop it on your form instead of the standard version, or replace it on existing forms with a little work. (You do have to create your version and install it first, though.)
Now use File->New->Other->Delphi Files, and double-click Component in the right pane. The New Component wizard will start, where you can choose the existing component you want to descend from (or design a new one).
Right-click on the package in the Project Manager (by default the upper right window in the IDE), and choose Install from the context menu. This will compile and build the package, and automatically install it in the IDE. (The example I've shown would put the new component on the Samples page in the palette based on what's indicated in the RegisterComponents call.)
After doing the above, you can change an existing form (make a backup of the .pas and .dfm files first!). I'll use the TToolBar you mentioned, and the sample replacement I've posted the shell for in the instructions below.
Right-click again, and choose View as Form from the context menu. If you've done these steps correctly, clicking on the toolbar should show you TMyToolBar in the Object Inspector. If you don't see it (or if you get error messages) you've done something wrong; you can close the tab by right-clicking it at the top of the Code Editor and choosing Close tab, and answer "No" to the prompt about saving changes, and then if necessary restore from the backup copies I told you to make first.
I want to simulate a complex system and therefore it would be easier for me to separate the logic into several smaller components. But at the end of the day I just want to drag and drop a single component in my layout (that includes not only the geometry but the whole logic of all the embedded components)
In the Home tab, you can select multiple components and press the Group button.
This will allow you to always select the whole group as one and more easily move it around or change similar properties.
Hi @Este thanks for your quick reply!
With the group option I can move a set of components together, but I still cannot save them as a single component consisting of two sub-components and in the future for example save it as a single component to be inserted in a new layout.
Also, have you tried just saving such complex things as layouts as those can be merged into other layouts from eCat similar to components. If each such layout contains a group they would be easier to manage.
Sadly, when you make changes to a component in your library folder, older Layouts are not automatically updated, so you have to be careful and re-import your complex components from your library. But this is the same for layouts consisting of simpler layouts.
i started creating application only using dpr file in delphi 2009 , i think all basic things work i use system ,sysutils and more.... but now i want to use timer and some other non-visual components (some basic indy components to use internet) is there any ways to do thisi do not bother using units (but not forms)
You can create any component by calling its constructor and passing nil as the owner. You won't need a parent form if you manage it yourself. But for some things, you will still need a project that uses forms, even if you're not placing your component on one. For TTimer, for example, you have to be running a VCL Forms app because it depends on Application and its message loop to make the timer work.
GoodData.UI comes with ready-made visual components listed in the Visual Components section. You can use these visual components as-is or customize them. You can also use the unique InsightView component that simply renders any chart that you create on the GoodData platform.
NOTE: All examples in this section showcase the use of the code generated by catalog-export and assume that the application is set up with BackendProvider and WorkspaceProvider as described in Connecting to an Analytical Backend.
The visual components are responsive by nature and take the whole space of their wrapper element. This behavior implicates that if you want to create a visualization with a specific height and width, you must specify those dimensions in the wrapper element. Otherwise, the visualization may not be visible.
The data props pass measures and attributes. These props are similar to the drag and drop sections in Analytical Designer and use similar names such as "View by", "Stack by" and so on.A data prop can be a single value or an array of either the IMeasure or IAttribute type, which is passed to the component as an object literal.
In the example below i have a MainMenu1, OpenDialog1, and DataSource1 objects on the form but i can't read the Captions. I thought there was a way to make non-visual objects non-transparent so it wasn't affected by the Form color.
My design objects are on a standard TForm not a DataModule. I have tried changing themes and still no change. In 'Stanos' screenshot where he has a dark form with the non-visual objects with white text is what i would expect to see.
3a8082e126