ugrás a tartalomhoz

Archívum - Feb 5, 2008 - Fórum téma

VB.NET dinamikus típus konverzió

halee · 2008. Feb. 5. (K), 14.53
Sziasztok,

Egy olyan kérdésem lenne, hogy hogyan tudom azt megoldani VB.NET-ben, hogy adott néhány osztályom közös szülőosztállyal, ezeket szépen belepakolom egy ArrayList-be, vagy bármely más listába és amikor végig iterálok a listán, akkor az aktuális elem render metódusát meghívva, na a szülő osztály render-e fusson le?

Régebben csináltam ilyet php-ben, ott ez teljesen sim ügy.

Egy rövid példakód, hogy mire gondolok:
...
public class base

public sub new()
end sub

public function render() as string
 return "Base"
end function

end class

public class child
 inherits base

public sub new()
 MyBase.new()
end sub

public function render() as string
 return "Child"
end function

end class

...

Dim lista as ArrayList = new ArrayList()

lista.add(new base())
lista.add(new child())

for i as integer=0 to lista.Count()-1
 Response.WriteLine(lista(i).render())
next


Ebben az esetben a kód ugyan lefut hiba nélkül, de mindkét esetben a base render metódusa fut.

Sajnos egyetlen lehetőséget találtam ennek kikerülésére, az pedig az, hogy egy select case-el a lista(i).GetType alapján szétválasztom és típuskényszerítem a különböző objektumokat. Ez viszont elég rugalmatlan sok különböző objektum esetén.

amire szükségem lenne, az logikailag így nézne ki:

(CType(lista(i),lista(i).GetType())).Render()


de ez sajnos nem működik...

Ha valaki tud erre a select case-nél rugalmasabb megoldást az pls help!

előre is köszi,
Halee
 

Dinamikus DIV IE-ben nem megy

hemu · 2008. Feb. 5. (K), 11.31
Sziasztok!
Bocs, hogy új témát nyitotam, de elég "egyedi" a bajom.
Adott egy kód:

	function createcp(name){
		layer = document.createElement("div");
		layer.id = name;
		layer.style.background = "#FFFFFF";
		layer.style.border = "1px solid black";
		layer.style.position = "absolute";
		layer.style.visbility = 'hidden';
		layer.style.top = yMousePos + "px";
		layer.style.left = xMousePos + "px";
		var colors = Array('FF','CC','00','99','66','33');
		if (!clrs){
			var clrs = Array();
			for (i = 0;i < colors.length;i++){
				for (j = 0;j < colors.length; j++){
					for (k = 0;k < colors.length; k++){
						clrs[clrs.length] = '#' + colors[i] + colors[j] + colors[k];
					}
				}
			}
		}
		tabla = document.createElement("table");
		tabla.cellSpacing = 0;
		tabla.cellPadding = 0;
		for (i=0;i<clrs.length;i++){
			if(i%18==0){
				TR=document.createElement("tr");
				TR.style.height = 10 + 'px';
				tabla.appendChild(TR);
			}
			TD = document.createElement("td");
			TD.style.cursor = "pointer";
			TD.style.width = 10 + 'px';
			TD.style.height = 10 + 'px';
			TD.style.border = '1px solid white';
			TD.bgColor = clrs[i];
			TD.onclick = function(){colorFormat(this.bgColor,name)};
			TD.onmouseover = function(){this.style.border = '1px solid black';};
			TD.onmouseout = function(){this.style.border = '1px solid white';};
			TD.innerText = " ";
			TR.appendChild(TD);
		}
		layer.appendChild(tabla);
		document.body.appendChild(layer);
		document.getElementById(name).style.visibility = 'visible';
	}
Ez FF-ben gyönyörűen működik, de IE-ben a layer 1x1 pixeles, ha pedig direktben belövöm a méretét 100x100-asra mondjuk, a színeket tartalmazó tábla nem látszik rajta.
Van tippetek, mitől lehet?
Ha kialertelem a tabla változó innerHTML-ét, akkor szépen látszik, hogy a tábla rendben legenerálódott.

Üdv:
hemu
 

Mi a baj a kódommal?

loader · 2008. Feb. 5. (K), 09.49
Sziasztok!
Van egy flash php kommunikációm, de csak egyirányú, nevlist.php:

<?php
include("db.php");
$nevek=mysql_query("select * from nevek");
while ($sor=mysql_fetch_array($nevek))
	{
	$nevek2 .=$sor["nev"]."\n";
}
$nevek3 = mb_convert_encoding($nevek2, "UTF-8");
print $nevek3;
?>
adatbázisból kiszedek egy halom nevet, amit "\n"-el elválasztok egymástól és a $nevek3-ba tárolom
flashben combo boxban jelenítem meg, action script:

myVars = new LoadVars();
myVars.load("nevlist.php");
myVars.onData = function(raw) {
        tmp = raw.split("\n");
        for(var i=0;i<tmp.length;i++) {

                tmp2 = tmp[i].split(":");
                nevek.addItem(tmp2[0], tmp2[1]);
        }
}
function traceCombo(nevek) {
	trace ("Selected Data: " + nevek.getSelectedItem().data);
}
a combo boxban meg is jelenik, de ha kiválasztok egy nevet, rányomok egy gombra, ami meghív egy másik php-t, nem adja át így: $neve = $_POST['nevek'];
a leyerre kell rakni az as-et vagy a comboboxra?
 

Sablon rendszerrel kapcsolatban kérnék segítséget

felyx · 2008. Feb. 5. (K), 04.31
A segítségeteket szeretném kérni, régóta foglalkoztat a gondolat, hogy egy sablon rendszert elkezdjek használni. Smarty-t egyszer megnéztem és biztos vagyok benne, hogy jó és használható, de miután eleget olvasgattam a témában úgy gondolom sokkal ésszerűbb php nyelven kezelni a sablonokat több szempontból is. A problémám abból adódik, hogy hiába töltöttem estéket azzal hogy utánajárjak annak, hogy php-ben hogyan tudnám megvalósítani ezt, nem sikerült megértenem jobban a hogyanját. Sajnos nem vagyok phpguru, de látom a pozitív oldalát a sablonoknak és ha valaki megtenné, hogy elmagyarázza, hogyan működik a sablon kezelés pontosan és mit érdemes tudnia egy ilyen rendszernek, akkor nagyon szépen megköszönném. Ha esetleg példákkal is meg tudná valaki mutatni azt is megköszönném, de nem várok kész megoldást, bár nem titkolom kerestem hasonló egyszerű rendszert, hogy az alapján sajátot írhassak. Furcsának tűnhet, hogy ha nem tudom hogyan is működik a dolog akkor miért akarom használni, no a válaszom az, hogy egyrészt a kinézetét az oldalnak könnyebben megtudnám változtatni, másrészt ha olyasvalakivel dolgozok együtt egy projecten aki nem programozó, akkor ne kelljen neki a php kóddal túl sokat foglalkoznia, csak alapvető dolgokat kelljen megmutatnom neki. Elnézéseteket kérem mindenesetre, mert tudom hogy ez a téma már sokszor felmerült, igyekeztem megoldást találni de sajnos már nemtudom hol keressem a választ. Segítségeteket előre is köszönöm.