powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (js) насколько востребована такая штука:
25 сообщений из 54, страница 2 из 3
(js) насколько востребована такая штука:
    #38018711
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeА тогда о чём сабж?
если кратко - о том, насколько неудобен (не практичен) html + чистый js (в т.ч. jQuery) для работы с элементами страницы. И насколько удобнее объектная модель делфи + xml интерфейс (xml интерфейс - как опция для удобства создания начального интерфейса).
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38018813
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не хтмл+яваскрипт, а хтмл+цсс. Про делфическую разметку забудьте. XAML в этом контенсте тоже не рекомендую.
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38018831
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрИ насколько удобнее объектная модель делфи + xml интерфейс (xml интерфейс - как опция для удобства создания начального интерфейса).Ну вот попробуй ExtJS покурить, оно и выяснится.
только там не xml, а json, что для программиста ещё удобнее.
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38018875
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечПрограмёрИ насколько удобнее объектная модель делфи + xml интерфейс (xml интерфейс - как опция для удобства создания начального интерфейса).Ну вот попробуй ExtJS покурить, оно и выяснится.
только там не xml, а json, что для программиста ещё удобнее.

обязательно посижу на выходных... посмотрю ) А пока что буду понемногу писать свои классы :) (пишу на телефоне в пути домой, так что "приятное с полезным" )
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38018889
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрА пока что буду понемногу писать свои классы :)
пишу на телефоненаписание кода, используя телефон?
да, этот человек сможет сделать круче, чем extjs...
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38018895
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечПрограмёрА пока что буду понемногу писать свои классы :)
пишу на телефоненаписание кода, используя телефон?
да, этот человек сможет сделать круче, чем extjs...
)) не смешно... ))
просто usb от телефона дома забыл. сегодня вечером постараюсь кинуть то, что уже написал (если конечно не запинают :) )
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38019344
Фотография asws
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрДобрый день всем.
Такой вопрос интересный возник. Просто когда я переходил с прикладного программирования на вэб, первые же проблемы были - это кроссбраузерность, сложность обращения к элементам DOM (частично решено с jQuery) и медлительность таких обращений.
Поэтому чисто ради спортивного интереса решил начать разработку своей библиотеки на js, с набором основных компонентов delphi (мой родной язык). Задумка - уйти от вёрстки в чистом виде (html) и перейти к формированию интерфейса через js или же xml. Также это уменьшит количество обращений к DOM, так как часть информации и настроек будут сохранены в объекте вне DOM (то есть, что бы узнать расположение например и многое другое не прийдётся обращаться к стилям и аттрибутам элемента).
Вот и вопрос, есть ли в этом смысл?

P.S. просто был уверен что мне это понадобится, но вот коллеги на работе отрицают востребованность данной библиотеки...
Готовьтесь к тому, что кроме Вас, Ваша поделка никому не будет нужной.
Так было у меня, это титанический труд, более 2-х лет, пока не было написано несколько серьезных онлайн-систем (от автоматизированных сайтов до различных систем учета).
Мне повезло - сейчас наша организация создает практически любые веб-ресурсы на моей системе, и сотрудники наконец начали ее более-менее осваивать.

В любом случае Вы получите бесценный опыт и практические знания, которые не забываются, потому что Вы это освоили сами!
Уважаю таких как Вы. Удачи!
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38019347
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asws,

Просто так ничего не бывает. Набрались опыта и т.п... . Вполне нормальное дело.
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38019421
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если кому просто интересно - привожу код... Сильно не пинайте, просто если чё не так делаю - пишите, поправляйте меня, буду только рад.
Это маленький арканоид (совсем маленький :) )... Ну и при проигрыше появляются две пустые формочки (просто что бы показать как это уже можно делать), которые можно тягать. body специально сузил до 300px (просто ещё соотношения экрана не контролирую и всё такое). много чего уже задумал, и ещё больше даже не задумал ещё :)

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
// файл 1.js
extend = function(obj, cl, params){
 var params = params || [];
 cl.apply(obj, params);
 if (obj._superclasses==undefined) obj._superclasses = [];
 obj._superclasses.push(cl);
}
TNotify = {
 stop: function(e){
  if(typeof e.preventDefault!=="undefined"){
   e.preventDefault();
  }else{
   e.returnValue=false;
  };
  if(typeof e.stopPropagation!="undefined"){
   e.stopPropagation();
  }else{
   e.cancelBubble();
  }
 }
}
//тут будут очереди событий... ещё обдумываю
window.quene=[];
setTimeout(function(){
 var ev;
 if(ev = window.quene.shift()){
  ev["func"].call(ev.el, ev.e);
  setTimeout(arguments.callee, 0);
 }else{
  setTimeout(arguments.callee, 10);
 }
},10);
function TObject(){
 extend(this, Object);
 this._superclasses.push(this.constructor);
 this.protect = {self: this};
 this.destroy = function(){delete this;}
 this.getClass = function(){
  return this.constructor;
 }
 this.instanceOf = function(cl){
  var i = this._superclasses.indexOf(cl);
  if (i==-1) return false
  else return true;
 }
}
function TCollection(){
 extend(this,TObject);
 this.protect.objects=[];
 this.add = function(obj){
  this.protect.objects.push(obj);
 }
 this.remove = function(obj){
  var k=0;
  while(this.protect.objects[k]!=obj) k++;
  var l=this.protect.objects.length;
  this.protect.objects[k]=this.protect.objects[l-1];
  this.protect.objects.pop(); 
 }
 this.each = function(func){
  var tmp = [];
  for(var k=0; k<this.protect.objects.length; k++) tmp.push(this.protect.objects[k]);
  for(var k=0; k<tmp.length; k++){
   func.call(tmp[k]);
  }
 delete tmp;
 }
}
//планируется
/*function TServer(Owner){
 extend(this, TObject);
 this.protect.proc=new XMLHTTPRequest();
 this.ready = function(){}
 this.exec = function(lib, funcName, params){
  var args = "";
  for (var v in params){
   args +="&"+URIEncodeComponent(v)+"="+URIEncodeComponent(params[v]); 
  }
  var self = this;
  this.onreadyStateChange = function(req, answer){
   if (req.readyState==4 && req.status==200){
    self.ready.call(Owner);
   }
  }
  this.protect.proc.open("get", lib+"?"+encodeURIComponent(funcName)	+args, true);
  this.protect.send(null);
 }
}*/
function TPoint(x, y){
 extend(this, TObject);
 this.x = x;
 this.y = y;
}
function TBounds(left, top, width, height){
 extend(this, TObject);
 this.left = left;
 this.top = top;
 this.width = width;
 this.height = height;
}
function TBorder(bwidth, btype, bcolor){
 extend(this, TObject);
 this.width = bwidth || 0;
 this.type = btype || "solid";
 this.color = bcolor || "#000";
 this.toString = function(){
  return this.width+"px "+this.type+" "+this.color;
 }
}
function TRect(l, t, r, b){
 extend(this, TObject);
 this.left=l;
 this.top=t;
 this.right=r;
 this.bottom=b;
}
function TTimer(){
 extend(this, TObject);
 this.timer = function(){}
 this.protect.onTimer = function(){
  this.self.timer();
 }
 this.interval = 1000;
 this.protect.timer=null;
 this.protect.enabled = false;
 this.enable = function(){
  var prot=this.protect;
  if (this.protect.enabled == false){
   this.protect.enabled = true;
   this.protect.timer = setInterval(
    function(){prot.onTimer();}, prot.self.interval
   );
  }
 }
 this.disable = function(){
  var prot=this.protect;
  if (this.protect.enabled == true){
   this.protect.enabled = false;
   clearInterval(this.protect.timer);
   this.protect.timer = null;
  }
 }
 this.getEnabled = function(){
  return this.protect.enabled;
 }
}
function TComponent(){
 extend(this, TObject);
 var _destroy = this.destroy;
 this.destroy = function(){
  if (this.getParent()!=null){
   this.getParent().protect.removeChild(this);
   _destroy.call(this);
  }
 }
 this.click=function(e){};
 this.focus=function(e){};
 this.mouseDown=function(e){}
 this.mouseUp=function(e){}
 this.keyDown=function(e){}
 this.keyUp=function(e){}
 this.keyPress=function(e){}
 this.mouseMove=function(e){}
 this.protect.onclick=function(e){
  this.self.click(e); 
  if (this.parent!=null && !(term===false) )
   this.parent.protect.onclick(e);
  };
 this.protect.onfocus=function(e){
  term = this.self.focus(e);
  if (this.parent!=null && !(term===false))
    this.parent.protect.onfocus(e);
  };
 this.protect.onmouseDown=function(e){
  term = this.self.mouseDown(e); 
  if (this.parent!=null && !(term===false) )
    this.parent.protect.onmouseDown(e);
 };
 this.protect.onmouseUp=function(e){
  term = this.self.mouseUp(e); 
  if (this.parent!=null && !(term===false) )
    this.parent.protect.onmouseUp(e);
 };
 this.protect.onkeyDown=function(e){
  term = this.self.keyDown(e); 
  if (this.parent!=null && !(term===false) )
    this.parent.protect.onkeyDown(e);
  };
 this.protect.onkeyUp=function(e){
  term = this.self.keyUp(e); 
  if (this.parent!=null && !(term===false) )
    this.parent.protect.onkeyUp(e);
 };
 this.protect.onkeyPress=function(e){
  term = this.self.keyPress(e); 
  if (this.parent!=null && !(term===false) )
    this.parent.protect.onkeyPress(e);
  }; 
 this.protect.onmouseMove=function(e){
  term = this.self.mouseMove(e);
  if (this.parent!=null && !(term===false) ){
   this.parent.protect.onmouseMove(e);
  }
 }
 this.protect.children = [];
 this.protect.left = 0;
 this.protect.top = 0;
 this.protect.width = 0;
 this.protect.height = 0;
 this.protect.borders=new TRect(new TBorder(), new TBorder(), new TBorder(), new TBorder());
 this.protect.visibility=false;
 this.protect.background="transparent";
 this.protect.element = null;
 this.protect.parent=null;
 this.protect.appendChild=function(child){
  this.children.push(child);
  this.element.appendChild(child.protect.element);
 };
 this.protect.removeChild=function(child){
  this.element.removeChild(child.protect.element);
  var k=0;
  while(this.children[k]!=child) k++;
  var l=this.children.length;
  this.children[k]=this.children[l-1];
  this.children.pop();
 };
 this.protect.createElement = function(tag){
  if (tag!=null)
   this.element = document.createElement(tag);
   (function(){
    var prot = this;
    this.element.onclick=function(e){
     prot.onclick(e);
     TNotify.stop(e);
    };
    this.element.onfocus=function(e){
     prot.onfocus(e);
     TNotify.stop(e);
    }
    this.element.onmousemove=function(e){
     prot.onmouseMove(e);
     TNotify.stop(e);
    }
    this.element.onmousedown=function(e){
     prot.onmouseDown(e);
     TNotify.stop(e);
    }
    this.element.ontouchstart=function(e){
     prot.onmouseDown(e.touches[0]);
     TNotify.stop(e);
    }
    this.element.onmouseup=function(e){
     prot.onmouseUp(e);
     TNotify.stop(e);
    }
    this.element.ontouchend=function(e){
     prot.onmouseUp(e.touches[0]);
     TNotify.stop(e);
    }
    this.element.ontouchmove=function(e){
     prot.onmouseMove(e.touches[0]);
     TNotify.stop(e);
    }
   }).call(this);
   this.self.setBounds(new TBounds(
    this.left,
    this.top,
    this.width,
    this.height
   ));
  (function(style){
   style.position="absolute";
   style.boxSizing="border-box";
   style.border=this.protect.border;
   style.padding="0"; style.margin="0";
   style.visibility="hidden";
   style.background=this.protect.background;
   style.overflow="auto";
  }).call(this.self, this.element.style);
 }
 this.setParent = function(parent){
  this.protect.parent=parent;
  parent.protect.appendChild(this);
  this.setBounds(this.getBounds());
 }
 this.getParent = function(){
  return this.protect.parent;
 }
 this.getBounds = function(){
  var bounds = new TBounds(
   this.protect.left,
   this.protect.top,
   this.protect.width,
   this.protect.height
  )
  return bounds;
 }
 this.setPosition = function(position){
  if (position.instanceOf(TPoint)){
   (function(){
    this.left = position.x;
    this.top = position.y;
    this.element.style.left = position.x+"px";
    this.element.style.top = position.y+"px";
   }).call(this.protect);
  }
 }
 this.setSize = function(size){
  if (size.instanceOf(TPoint)){
   if ((size.x==0) && ((this.getParent()!=null) || this.instanceOf(TApplication))){
    var pb=(this.getParent()!=null)?this.getParent().getBorders():null;
    size.x=(pb!=null)?this.getParent().getBounds().width-(pb.left.width+pb.right.width):this.protect.element.parentNode.clientWidth;
   }
   if ((size.y==0) && ((this.getParent()!=null) || this.instanceOf(TApplication))){
    var pb=(this.getParent()!=null)?this.getParent().getBorders():null; 
    size.y=(pb!=null)?this.getParent().getBounds().height-(pb.top.width+pb.bottom.width):this.protect.element.parentNode.clientHeight;
   }
   (function(){ 
    this.width = size.x;
    this.height = size.y;
    this.element.style.width = size.x+"px";
    this.element.style.height = size.y+"px"; 
   }).call(this.protect);
  }
 }
 this.setBounds = function(bounds){
  if (bounds.instanceOf(TBounds)){ 
   this.setPosition(new TPoint(bounds.left, bounds.top));
   this.setSize(new TPoint(bounds.width, bounds.height));
  } 
 }
 this.setBackground = function(color, image, x, y, repeat){
  var color = color || "transparent";
  var image = image || "";
  var x = x || "0";
  var y = y || "0";
  var repeat = repeat || "no-repeat";
  (function(){
   this.color = color;
   this.image = image;
   this.x=x; this.y=y;
   this.repeat=repeat;
   this.element.style.backgroundColor=color;
   this.element.style.backgroundImage=image;
   this.element.style.backgroundPosition=x+" "+y;
   this.element.style.backgroundRepeat=repeat;
  }).call(this.protect);
 }
 this.setBorders=function(bl, bt, br, bb){
  var bl = bl||(new TBorder());
  var bt = bt||bl;
  var br = br||bl;
  var bb = bb||bt||bl;
  with(this.protect){
   borders.left = bl;
   borders.top = bt;
   borders.right = br;
   borders.bottom = bb;
  }
  this.protect.element.style.borderTop=bt.toString();
  this.protect.element.style.borderLeft=bl.toString();
  this.protect.element.style.borderRight=br.toString();
  this.protect.element.style.borderBottom=bb.toString();
 }
 this.getBorders = function(){
  var brd = this.protect.borders;
  return {left: new TBorder(brd.left.width, brd.left.type, brd.left.color), top: new TBorder(brd.top.width, brd.top.type, brd.top.color), right: new TBorder(brd.right.width, brd.right.type, brd.right.color), bottom: new TBorder(brd.bottom.width, brd.bottom.type, brd.bottom.color)}
 }
 this.show = function(){
  this.protect.visible=true;
  this.protect.element.style.visibility="inherit";
 }
 this.hide = function(){
  this.protect.visible=false;
  this.protect.element.style.visibility="hidden";
 }
}
function TApplication(){
 extend(this, TComponent);
 this.protect.element = document.body; 
 this.protect.createElement(null);
 this.setSize(new TPoint(0, 0));
 this.show();
}
function TPanel(){
 extend(this, TComponent);
 this.protect.createElement("div");
// this.setSize(new TPoint(100, 100));
}
function TDrager(){
 extend(this, TPanel);
 this.protect.element.style.zIndex="1000";
 var boundsLimit = TBounds(0,0,0,0);
 var parentBorders = null;
 var move = false;
 var moveComp = null;
 var moverComp = null;
 var cursorStart = new TPoint();
 var positionStart = new TBounds();
 this.start=function(e, comp, mover){
  if (comp.instanceOf(TComponent) && comp.getParent()!=undefined && mover.instanceOf(TComponent)){
   boundsLimit = comp.getParent().getBounds();
   parentBorders = comp.getParent().getBorders();
   if (typeof comp.getParent().getHeaderHeight!=="undefined")
    parentBorders.top.width += comp.getParent().getHeaderHeight();
   moveComp=comp;
   moverComp=mover;
   cursorStart = new TPoint(e.pageX, e.pageY);
   positionStart = moveComp.getBounds();
   this.show();
   return false;
  }
 }
 this.mouseMove = function(e){
  moverComp.mouseMove(e);
  var curX=e.pageX; var curY=e.pageY;
  if (e.pageX<boundsLimit.left+parentBorders.left.width) curX=boundsLimit.left+parentBorders.left.width;
  if (e.pageX>boundsLimit.left+boundsLimit.width-parentBorders.right.width) curX=boundsLimit.left+boundsLimit.width-parentBorders.right.width;
  if (e.pageY<boundsLimit.top+parentBorders.top.width) curY=boundsLimit.top+parentBorders.top.width;
  if (e.pageY>boundsLimit.top+boundsLimit.height-parentBorders.bottom.width) curY=boundsLimit.top+boundsLimit.height-parentBorders.bottom.width;
  var l = curX-cursorStart.x+positionStart.left;
  var t = curY-cursorStart.y+positionStart.top;
  moveComp.setPosition(new TPoint(l, t));
 }
 this.mouseUp = function(e){
  this.hide();
  moverComp.mouseUp(e);
 }
}
function TForm(){
 extend(this, TPanel);
 this.protect.appendChild=function(child){
  this.children.push(child);
  client.protect.element.appendChild(child.protect.element);
 };
 this.protect.removeChild=function(child){
  client.protect.element.removeChild(child.protect.element);
  var k=0;
  while(this.children[k]!=child) k++;
  var l=this.children.length;
  this.children[k]=this.children[l-1];
  this.children.pop();
 }; 
 this.getHeaderHeight = function(){
  return tp.getBounds().height;
 }
 var bt = new TBorder();
 var bo = theme.TForm.borders;
 this.setBorders(bo, bt, bo, bo);
 var tp = new TPanel();
 var client = new TPanel();
 var _setSize = this.setSize;
 this.setSize = function(size){
 _setSize.call(this, size);
 var b = this.getBounds();
 var bord = this.getBorders();
 client.setSize(new TPoint(b.width-bord.left.width-bord.right.width, b.height-theme.TForm.header.height-bord.top.width-bord.bottom.width));
 tp.setSize(new TPoint(b.width-bord.left.width-bord.right.width, theme.TForm.header.height));
 }
 tp.mouseDown = function(e){
  drager.start(e, this.getParent(), this);
 }
 client.setPosition(new TPoint(0, theme.TForm.header.height));
 this.protect.element.appendChild(client.protect.element);
 this.protect.element.appendChild(tp.protect.element);
 tp.protect.parent=this;
 tp.setBounds(new TBounds(0, 0, 0, theme.TForm.header.height));
 tp.show();
 client.show();
 tp.setBackground(theme.TForm.header.background);
 client.setBackground(theme.TForm.client.background);
}
//на будущее... inputs, images и т.д.
/*
function TInput(){
 extend(this, TComponent);
 this.protect.createElement("input");
 this.setSize(new TPoint(150, 15));
}
function TPassInput(){
 extend(this, TInput);
 this.protect.element.type="password";
}*/


theme = {
 TForm: {
  borders: new TBorder(2, "ridge", "#2035a0"),
  header: {
   height: 25,
   background: "#2035a0"
  },
  client: {
   background: "#a0a0a0"
  }
 }
}



// начало 
 window.app = new TApplication();
 window.app.setSize(new TPoint(300, 0));
 window.drager = new TDrager();
 drager.setParent(app);
 drager.setBounds(new TBounds(0,0,0,0)); 



Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
// файл 1.html

<html>
<head>
</head>
<body>
<script type="text/javascript" src="1.js">
</script>
<script type="text/javascript">
 var gbounds = app.getBounds();
 var asize=new TPoint(gbounds.width, gbounds.height);
 var ptop = gbounds.height*0.8 - 10; 
 var a = new TPanel();
 a.setBounds(new TBounds(0, (ptop-10), 10, 10));
 a.setBackground("red");
 a.setParent(app);
a.show();
 var blocks = new TCollection();
 for (var x=0; x<10; x++){
  for (var y=0; y<6; y++){
   var block = new TPanel();
   block.setBounds(new TBounds((x*asize.x/10),(y*20), asize.x/10, 20));
   block.setBackground("#808080");
   block.setBorders(new TBorder(1, "solid", "red"));
   block.setParent(app);
   block.show();
   blocks.add(block);
  }
 }
 var plato = new TPanel();
 plato.setBackground("green");
 plato.setBounds(new TBounds(0, ptop, 100, 10));
 plato.setParent(app);
 plato.show(); 
 var dirx=2;
 var diry=-3;
 var timer = new TTimer();
 timer.timer = function(){
  var bnd = a.getBounds();
  var p = plato.getBounds();
  if ((bnd.left+bnd.width>gbounds.width) || (bnd.left<0)) dirx=-dirx;
  if (bnd.top+bnd.height>ptop && bnd.left+bnd.width>p.left && bnd.left<p.left+p.width){
   diry = -Math.abs(diry);
   dirx-=(p.left-bnd.left+((p.width-bnd.width)>>1))>>5; 
  }else{
   if(bnd.top+bnd.height>ptop){
    timer.disable();
    var lose = new TForm();
    lose.setParent(app);
    lose.setBounds(new TBounds(0, 0, 200, 200));
    var losech=new TForm();
    losech.setParent(lose);
    lose.show();
    losech.setBounds(new TBounds(0,0,100,100));
    losech.show();
   }
  }
  if (bnd.top<0){
   diry=Math.abs(diry);
  }
  blocks.each(function(){
   var bounds=this.getBounds();
   var c1x = bnd.left + ((bnd.width+dirx)>>1);
   var c2x = bounds.left+(bounds.width>>1);
   var c1y = bnd.top + ((bnd.height+diry)>>1);
   var c2y = bounds.top+(bounds.height>>1);
   var dx = Math.abs(c1x-c2x)-((bnd.width+bounds.width+Math.abs(dirx))>>1);
   var dy = Math.abs(c1y-c2y)-((bnd.height+bounds.height+Math.abs(diry))>>1); 
   if (dx<=0 && dy<=0){
    if (Math.abs(dy/dx)==Math.abs(diry/dirx)){
     dirx=-dirx; diry=-diry;
    }else{
     if(Math.abs(dy/dx)<Math.abs(diry/dirx)){
      diry=-diry;
     }else{
      dirx=-dirx;
     }
    }
    blocks.remove(this);
    this.destroy();
   }
  });
  a.setPosition(new TPoint((bnd.left+dirx), (bnd.top+diry)));
 };
 app.mouseMove = function(e){
  plato.setPosition(new TPoint(e.pageX-plato.getBounds().width/2, ptop));
 }
 timer.interval=10;
 timer.enable();
</script>
</body>
</html>


критикам.... прошу понимать, что писалась библиотека несколько дней в дороге, да ещё и на телефоне (смартфоне) :)
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38019487
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,ку

Забейте. Учите яваскрипт. Верстку оставьте верстальщикам.
Прежде, чем изобретать колесо, изучите жиквери, прочтите книжку ризига, почитайте, что народ делает для оптимизации. Ради интереса посмотрите яндексовский БЭМ.

Яваскрипт это вам не на паскале марать, проверки типа !(term===false) это готичненько. Плюс сто тролпоинтов сразу.
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38019532
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mage.lanПрограмёр,ку

Забейте. Учите яваскрипт. Верстку оставьте верстальщикам.
Прежде, чем изобретать колесо, изучите жиквери, прочтите книжку ризига, почитайте, что народ делает для оптимизации. Ради интереса посмотрите яндексовский БЭМ.

Яваскрипт это вам не на паскале марать, проверки типа !(term===false) это готичненько. Плюс сто тролпоинтов сразу.
Все настолько плохо, да? А изучить jQuery - имеется ввиду его код покопать? И про тролпоинт впервые слышу. Это троян чтоли (если да, то дырку хоть одну покажите, что бы знать)? Про оптимизацию почитаю, думал этим заняться какраз. Очереди делать начал, но не совсем понял как правильно это делается и на время оставил (хотелось хоть какой костяк написать сначала). Вообщем комментируйте ошибки, буду смотреть, доучиваться.
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38019539
Фотография badboychik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
var asize=new TPoint

Вот же ж как делфи мозг то корёжит, а...
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38019544
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ExtPascal еще не предлагали?

https://code.google.com/p/extpascal/
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38019546
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще подобный велосипед: http://www.raudus.com/
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38019573
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
badboychik
Код: pascal
1.
var asize=new TPoint

Вот же ж как делфи мозг то корёжит, а...

эээ... ну просто я решил всё обернуть в специальные классы, что бы лучше всё контролировать... что бы проверять instanceOf любого объекта/массива и таким образом определять можно ли над ним выполнить какое-то действие. Образно говоря, если я форму унаследовал от TPanel, то всё, что я могу сделать с TPanel я могу и сделать с TForm. Точно так же я рассуждал о любом другом классе (как и TPoint). Представьте себе класс например TScreenPoint, который выдаёт ошибку при попытке записать в него координаты, выходящие за пределы экрана (ну или любой другой). Как его использовать в функциях? правильно, унаследовать его от TPoint и проверять на instanceOf(TPoint) . Если есть идеи лучше - готов послушать.
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38019750
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. SakExtPascal еще не предлагали?

https://code.google.com/p/extpascal/

Код: plaintext
1.
2.
3.
4.
	XXXXX/\ 
	XXXX//\\___nnґЇ\__(v^:\\ 
	XXXX\_____\\____)=\__o\\\ 
	is rolling on the floor, laughing my a** off 

Вот, уж, действительно
badboychikВот же ж как делфи мозг то корёжит, а...

Ну ладно там Ext.NET ... Но паскакаль... Это же уму не растяжимо
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38019814
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38020486
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
никому не понравилось что написано, или просто нету больше явных поправок по коду?
Извините за настойчивость, просто очень интересно что об этом всём думают другие программисты.
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38020574
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без притягивания за уши объектной идеологии было бы раза в три компактнее.
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38020604
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyБез притягивания за уши объектной идеологии было бы раза в три компактнее.
Я это понимаю (взять например YMaps1 и ymaps2, они там так и сделали и сразу уменьшили количество кода). Но у меня не укладывается как это реализовать можно без объектов. И кстати, нету также уверенности, что при увеличении сложности объектной модели (что я и расчитываю сделать) утверждение "без объектов легче" останется верным. Просто могут появиться функции, получающие на вход 10-15 разных параметров... или же 1 объект.
Думаю продолжить как есть и посмотреть что получится... Но подумать надо... может что-то и прийдёт в голову толковое.
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38020610
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,

"без объектов" - наверно имеются в виду конструкции вроде упомянутой var asize=new TPoint

можно ведь просто var asize={width: 34, height: 56};

в js всё проще и лаконичнее, чем в этих ваших паскалях

а объекты - для более сложных штук. Погугли, что такое prototype , и что с ним можно делать (я не про одноименную библиотеку).
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38020616
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,

тебе стоит сначала освоить JavaScript и изучить как реализованы популярные библиотеки типа jQuery и extJs. И только затем писать свою библиотеку. Из приведенного примера видно что ты воспринимаешь JavaScript как обычный процедурный язык программирования, а не как функциональный язык, каким он является. Кроме того ты совершенно напрасно пытаешься перенести свои знания Delphi/ObjectPascal/VCL на почву JavaScript и веб-разработки. Прямой перенос изначально обречен на неудачу.
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38020629
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрИ кстати, нету также уверенности, что при увеличении сложности объектной модели (что я и расчитываю сделать) утверждение "без объектов легче" останется верным.Я не сказал "легче", я сказал "компактнее". А под объектной идеологией я подразумевал ООП. Объекты в JS есть, а ООП нет. Если хочется ООП, смотри TypeScript .
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38020955
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр... если кратко - о том, насколько неудобен (не практичен) html + чистый js (в т.ч. jQuery) для работы с элементами страницы. И насколько удобнее объектная модель делфи + xml интерфейс (xml интерфейс - как опция для удобства создания начального интерфейса).Э-э-э... Неудобен... Вы переносите дельфийское мышление на веб. И через некоторое время (если не надоест этот чертов веб) убедитесь, что беговые коньки не подходят для игры в хоккей.
Любые фреймворки, и свои в том числе, как только начинаешь их использовать, садятся тебе на шею и загоняют в глубокую колею.
Потому я часто солидарен с Сержем (хотя он и, иной раз, перегибает), что использование нативных средств веба дают большую свободу, экономию ресурсов (клиента), да, наверное, и выигрыш во времени разработки - опять же, вопрос вкуса кошатины...
лирикаКогда (давно) познакомился с парадигмой аспнет и серверных контролов, то восхищению "красоты игры" не было предела. После некоторого времени общения с технологией пришло понимание, что не все так шоколадно. Вроде бы есть свобода - курочь готовые, пиши свои контролы, да только хлопотно это... Опять же постбеки... Вроде Аджакс есть - так вьюстейт гонять туда-сюда неохота (а тогда каналы были пожиже - сейчас семечки). На клиенте та же песня: вроде есть могучие фреймворки (например, нонешняя Сенча), так снова - шаг в сторону: расстрел. Всегда чего-то не хватает. Или допиливай с офигенной потерей времени или отсекай что не влезло. И, как-то потихоньку, сполз на аморфную технологию: в основе натив + какая-нибудь приправа: что быстрей, проще и лучше подходит для задачи.
...
Рейтинг: 0 / 0
(js) насколько востребована такая штука:
    #38083530
altagur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЕНа самом деле все это утпые распальцовки типа веб это вам не гуи. Глупо так пальцеваться когда весь мир не то что уже перешел на веб а ля гуи но переходит на облачныве хранилища где стоит голимое гуи и вы работаете в винде илои унихе сс гуи приладами

Проблемы две; Перва сраный гугл кк всегда все просрал и зхабросил ExtPascal не натянув его на extjs4
Отсюда вторая - уже существующие нормальные либы а ля Фархадова unigui начинают резко сосать из-за того наприер что даже встарых компонентах extj типа grid клавиши отвалили инадо addElListener('keypress',

Так что титаническая и совершенно полезная нужная работа - это натянуть extpascal на extjs4

Я пишу на си с моментаа его появления и на дельфе тоже и жабе. Visual сстуждень никогда не будет таким же удобным и приятным как дельфа потому что у гейтсовцев руки не в ту сторону торчат по жизни То что я на unigui делаю за час c автоматической генерацией форм Вы будете делать год всем предриятивм в вижуал студне и потом гордиться этим .
Так как googlу козлистый забросил extpascal остается естественно opensource project EXTJS для Visual Studio Сидеть же лапами верстать шото на php jquery и прочей хрени - убожество Неконкурентное. 90% усилий должна занимать и в вебе и в гуи разработка базы а морда 10% У криворуких же любителей птичьих языков все наоборот
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 2 из 3
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (js) насколько востребована такая штука:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]