Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
May 08, 2008 Sorry -not getting anywhere with setText() | ||||
---|---|---|---|---|
| ||||
Attachments: | Attach what I am trying to make work -not winning here ,round and round in loops Any help appreciated |
May 08, 2008 Re: Sorry -not getting anywhere with setText() | ||||
---|---|---|---|---|
| ||||
Posted in reply to June | On Thu, 08 May 2008 02:26:27 -0400, June <somewhere@so.com> wrote:
>Attach what I am trying to make work -not winning here ,round and round in loops Any help appreciated
You defined the setText(char[] name, char[] text) as nested function in Box's constructor. Move it out to the class' scope.
Btw, 'public:' is not needed as class members are public by default.
|
May 08, 2008 Re: Sorry -not getting anywhere with setText() | ||||
---|---|---|---|---|
| ||||
Posted in reply to Max Samukha | On Thu, 08 May 2008 10:36:20 +0300, Max Samukha <nospam@nospam.com> wrote: >On Thu, 08 May 2008 02:26:27 -0400, June <somewhere@so.com> wrote: > >>Attach what I am trying to make work -not winning here ,round and round in loops Any help appreciated > >You defined the setText(char[] name, char[] text) as nested function in Box's constructor. Move it out to the class' scope. > >Btw, 'public:' is not needed as class members are public by default. > > The following may have typos but should demonstrate the idea described in the previous thread: class Box { private Control[char[]] controls; // Use associative array this (Composite parent ,int style ) { auto box = new Composite(parent,DWT.SINGLE); box.setSize(700,40); auto No = new Text(box,DWT.LEFT); No.setBounds(1,15,10,15); No.setText(""); auto Date = new Text(box,DWT.LEFT); Date.setBounds( 21, 15, 60, 15); Date.setText(""); auto Content = new Text(box,DWT.LEFT); Content.setBounds( 90, 15,70, 15); Content.setText(""); box.setVisible = true; controls["No"]=No; controls["Date"]=Date; controls["Content"]=Content; box.setTabList(controls.values); } void setText(char[] name, char[] text) { controls[name].setText(text); } } void main () { Display display = new Display (); Shell shell = new Shell (display); shell.setText("Boxes"); Box mybox = new Box(shell,DWT.SINGLE); mybox.setText("No","wire"); mybox.setText("Content","Fishingline"); shell.pack(); shell.open(); while (!shell.isDisposed ()) { if (!display.readAndDispatch ()) display.sleep (); } display.dispose (); } |
May 08, 2008 Re: Sorry -not getting anywhere with setText() | ||||
---|---|---|---|---|
| ||||
Posted in reply to Max Samukha Attachments: | Max Samukha Wrote:
> On Thu, 08 May 2008 10:36:20 +0300, Max Samukha <nospam@nospam.com> wrote:
>
> >On Thu, 08 May 2008 02:26:27 -0400, June <somewhere@so.com> wrote:
> >
> >>Attach what I am trying to make work -not winning here ,round and round in loops Any help appreciated
> >
> >You defined the setText(char[] name, char[] text) as nested function in Box's constructor. Move it out to the class' scope.
> >
> >Btw, 'public:' is not needed as class members are public by default.
> >
> >
>
> The following may have typos but should demonstrate the idea described in the previous thread:
>
> class Box {
>
> private Control[char[]] controls; // Use associative array
>
> this (Composite parent ,int style ) {
>
> auto box = new Composite(parent,DWT.SINGLE);
> box.setSize(700,40);
>
> auto No = new Text(box,DWT.LEFT);
> No.setBounds(1,15,10,15);
> No.setText("");
>
> auto Date = new Text(box,DWT.LEFT);
> Date.setBounds( 21, 15, 60, 15);
> Date.setText("");
>
> auto Content = new Text(box,DWT.LEFT);
> Content.setBounds( 90, 15,70, 15);
> Content.setText("");
>
> box.setVisible = true;
>
> controls["No"]=No;
> controls["Date"]=Date;
> controls["Content"]=Content;
>
> box.setTabList(controls.values);
>
> }
>
> void setText(char[] name, char[] text)
> {
> controls[name].setText(text);
> }
> }
>
> void main () {
> Display display = new Display ();
> Shell shell = new Shell (display);
> shell.setText("Boxes");
>
> Box mybox = new Box(shell,DWT.SINGLE);
> mybox.setText("No","wire");
> mybox.setText("Content","Fishingline");
> shell.pack();
> shell.open();
> while (!shell.isDisposed ()) {
> if (!display.readAndDispatch ()) display.sleep ();
> }
> display.dispose ();
> }
Hi & Thanks .. I tried this and adjusted a couple of lines in Main that I had wrong . Still get a compile error related to controls?
|
May 08, 2008 Re: Sorry -not getting anywhere with setText() | ||||
---|---|---|---|---|
| ||||
Posted in reply to June | On Thu, 08 May 2008 04:35:18 -0400, June <somewhere@so.com> wrote:
>Max Samukha Wrote:
>
>> On Thu, 08 May 2008 10:36:20 +0300, Max Samukha <nospam@nospam.com> wrote:
>>
>> >On Thu, 08 May 2008 02:26:27 -0400, June <somewhere@so.com> wrote:
>> >
>> >>Attach what I am trying to make work -not winning here ,round and round in loops Any help appreciated
>> >
>> >You defined the setText(char[] name, char[] text) as nested function in Box's constructor. Move it out to the class' scope.
>> >
>> >Btw, 'public:' is not needed as class members are public by default.
>> >
>> >
>>
>> The following may have typos but should demonstrate the idea described in the previous thread:
>>
>> class Box {
>>
>> private Control[char[]] controls; // Use associative array
>>
>> this (Composite parent ,int style ) {
>>
>> auto box = new Composite(parent,DWT.SINGLE);
>> box.setSize(700,40);
>>
>> auto No = new Text(box,DWT.LEFT);
>> No.setBounds(1,15,10,15);
>> No.setText("");
>>
>> auto Date = new Text(box,DWT.LEFT);
>> Date.setBounds( 21, 15, 60, 15);
>> Date.setText("");
>>
>> auto Content = new Text(box,DWT.LEFT);
>> Content.setBounds( 90, 15,70, 15);
>> Content.setText("");
>>
>> box.setVisible = true;
>>
>> controls["No"]=No;
>> controls["Date"]=Date;
>> controls["Content"]=Content;
>>
>> box.setTabList(controls.values);
>>
>> }
>>
>> void setText(char[] name, char[] text)
>> {
>> controls[name].setText(text);
>> }
>> }
>>
>> void main () {
>> Display display = new Display ();
>> Shell shell = new Shell (display);
>> shell.setText("Boxes");
>>
>> Box mybox = new Box(shell,DWT.SINGLE);
>> mybox.setText("No","wire");
>> mybox.setText("Content","Fishingline");
>> shell.pack();
>> shell.open();
>> while (!shell.isDisposed ()) {
>> if (!display.readAndDispatch ()) display.sleep ();
>> }
>> display.dispose ();
>> }
>Hi & Thanks .. I tried this and adjusted a couple of lines in Main that I had wrong . Still get a compile error related to controls?
The attached file is empty
|
May 08, 2008 Re: Sorry -not getting anywhere with setText() | ||||
---|---|---|---|---|
| ||||
Posted in reply to Max Samukha Attachments: | Max Samukha Wrote:
> On Thu, 08 May 2008 04:35:18 -0400, June <somewhere@so.com> wrote:
>
> >Max Samukha Wrote:
> >
> >> On Thu, 08 May 2008 10:36:20 +0300, Max Samukha <nospam@nospam.com> wrote:
> >>
> >> >On Thu, 08 May 2008 02:26:27 -0400, June <somewhere@so.com> wrote:
> >> >
> >> >>Attach what I am trying to make work -not winning here ,round and round in loops Any help appreciated
> >> >
> >> >You defined the setText(char[] name, char[] text) as nested function in Box's constructor. Move it out to the class' scope.
> >> >
> >> >Btw, 'public:' is not needed as class members are public by default.
> >> >
> >> >
> >>
> >> The following may have typos but should demonstrate the idea described in the previous thread:
> >>
> >> class Box {
> >>
> >> private Control[char[]] controls; // Use associative array
> >>
> >> this (Composite parent ,int style ) {
> >>
> >> auto box = new Composite(parent,DWT.SINGLE);
> >> box.setSize(700,40);
> >>
> >> auto No = new Text(box,DWT.LEFT);
> >> No.setBounds(1,15,10,15);
> >> No.setText("");
> >>
> >> auto Date = new Text(box,DWT.LEFT);
> >> Date.setBounds( 21, 15, 60, 15);
> >> Date.setText("");
> >>
> >> auto Content = new Text(box,DWT.LEFT);
> >> Content.setBounds( 90, 15,70, 15);
> >> Content.setText("");
> >>
> >> box.setVisible = true;
> >>
> >> controls["No"]=No;
> >> controls["Date"]=Date;
> >> controls["Content"]=Content;
> >>
> >> box.setTabList(controls.values);
> >>
> >> }
> >>
> >> void setText(char[] name, char[] text)
> >> {
> >> controls[name].setText(text);
> >> }
> >> }
> >>
> >> void main () {
> >> Display display = new Display ();
> >> Shell shell = new Shell (display);
> >> shell.setText("Boxes");
> >>
> >> Box mybox = new Box(shell,DWT.SINGLE);
> >> mybox.setText("No","wire");
> >> mybox.setText("Content","Fishingline");
> >> shell.pack();
> >> shell.open();
> >> while (!shell.isDisposed ()) {
> >> if (!display.readAndDispatch ()) display.sleep ();
> >> }
> >> display.dispose ();
> >> }
> >Hi & Thanks .. I tried this and adjusted a couple of lines in Main that I had wrong . Still get a compile error related to controls?
>
> The attached file is empty
This site seems slow ,I did not check Sorry
|
May 08, 2008 Re: Sorry -not getting anywhere with setText() | ||||
---|---|---|---|---|
| ||||
Posted in reply to June | On Thu, 08 May 2008 05:53:22 -0400, June <somewhere@so.com> wrote:
>Max Samukha Wrote:
>
>> On Thu, 08 May 2008 04:35:18 -0400, June <somewhere@so.com> wrote:
>>
>> >Max Samukha Wrote:
>> >
>> >> On Thu, 08 May 2008 10:36:20 +0300, Max Samukha <nospam@nospam.com> wrote:
>> >>
>> >> >On Thu, 08 May 2008 02:26:27 -0400, June <somewhere@so.com> wrote:
>> >> >
>> >> >>Attach what I am trying to make work -not winning here ,round and round in loops Any help appreciated
>> >> >
>> >> >You defined the setText(char[] name, char[] text) as nested function in Box's constructor. Move it out to the class' scope.
>> >> >
>> >> >Btw, 'public:' is not needed as class members are public by default.
>> >> >
>> >> >
>> >>
>> >> The following may have typos but should demonstrate the idea described in the previous thread:
>> >>
>> >> class Box {
>> >>
>> >> private Control[char[]] controls; // Use associative array
>> >>
>> >> this (Composite parent ,int style ) {
>> >>
>> >> auto box = new Composite(parent,DWT.SINGLE);
>> >> box.setSize(700,40);
>> >>
>> >> auto No = new Text(box,DWT.LEFT);
>> >> No.setBounds(1,15,10,15);
>> >> No.setText("");
>> >>
>> >> auto Date = new Text(box,DWT.LEFT);
>> >> Date.setBounds( 21, 15, 60, 15);
>> >> Date.setText("");
>> >>
>> >> auto Content = new Text(box,DWT.LEFT);
>> >> Content.setBounds( 90, 15,70, 15);
>> >> Content.setText("");
>> >>
>> >> box.setVisible = true;
>> >>
>> >> controls["No"]=No;
>> >> controls["Date"]=Date;
>> >> controls["Content"]=Content;
>> >>
>> >> box.setTabList(controls.values);
>> >>
>> >> }
>> >>
>> >> void setText(char[] name, char[] text)
>> >> {
>> >> controls[name].setText(text);
>> >> }
>> >> }
>> >>
>> >> void main () {
>> >> Display display = new Display ();
>> >> Shell shell = new Shell (display);
>> >> shell.setText("Boxes");
>> >>
>> >> Box mybox = new Box(shell,DWT.SINGLE);
>> >> mybox.setText("No","wire");
>> >> mybox.setText("Content","Fishingline");
>> >> shell.pack();
>> >> shell.open();
>> >> while (!shell.isDisposed ()) {
>> >> if (!display.readAndDispatch ()) display.sleep ();
>> >> }
>> >> display.dispose ();
>> >> }
>> >Hi & Thanks .. I tried this and adjusted a couple of lines in Main that I had wrong . Still get a compile error related to controls?
>>
>> The attached file is empty
>This site seems slow ,I did not check Sorry
Unlike in .NET winforms, you cannot set text for any control and Control class does not have a setText property so if you don't plan to use other controls than Text, declare the value type of the associative array to be Text. Also I'm not sure that Composite has a setTabList property. Please consult SWT reference.
And if I understand correctly you are going to use lots of textboxes. If you are going to present a list or tabular data, it would be better for performance and yourself to use a grid or list control whatever is appropriate and available in DWT.
|
May 08, 2008 Re: Sorry -not getting anywhere with setText() | ||||
---|---|---|---|---|
| ||||
Posted in reply to June | June wrote: > Attach what I am trying to make work -not winning here ,round and round in loops > Any help appreciated > Why are you storing Text instances in an associative array and then accessing them by name? You are doing: Box mybox = new Box(shell,DWT.SINGLE); mybox.setText("No","wire"); mybox.setText("Content","Fishingline"); Than means that you know that Box has a "No" and "Content" Text. I recommend you to store them as public fields of Box class (or as properties, it's almost the same): class Box { Text No; Text Date; Text Content; public: this (Composite parent ,int style ) { // ... No = new Text(box,DWT.LEFT); Date = new Text(box,DWT.LEFT); Content = new Text(box,DWT.LEFT); // ... } } That way, if you mistype "Content", "No" or "Date", you'll get a compile error, while in your approach, you'll get a runtime error. And also, if you use an IDE that offers autocompletion, you can do "box." and get No, Date and Content as suggestions. The setText method, in this case, should be: void setText(Text control, char[] text) { control.setText(text); } |
Copyright © 1999-2021 by the D Language Foundation