Steve Jobs‘ın ölümüyle sarsılan bilişim dünyası bu kez de C programlama dilinin yazılımcısı Dennis Ritchie‘nin ölümünün üzüntüsünü yaşıyor (12 Ekim 2011).
RitchieSteve Jobs kadar medyatik olmasa da teknoloji dünyası için en az onun kadar önemli bir isim. programlama dilinin ve UNIX işletim sisteminin yaratıcılarından Dennis Ritchie, yaşamı boyunca gerek kişisel, gerekse ekip arkadaşlarıyla birlikte yaptığı çalışmalar sayesinde birçok ödül almış bir uzmandı.

C programlama dilini arkadaşı Ken Thompson’la beraber Bell labaratuarlarında geliştiren Ritchie, birçok bilgisayar mühendisinin idolüydü.

Dennis Ritchie ve Brian Kernighan​ tarafından 1978 yılında yayınlanan ve tüm dünyaya bu yeni dili öğreten ‘The C Programming Language’ kitabıysa bugün hala C dilinin kutsal kitabı olarak görülüyor.Dennis Ritchie, Unix işletim sisteminin gelişmesi için ömrü boyunca bir çok çalışmada yer almış, bu işletim sisteminin özellikle sunucular üzerinde çok yaygın olarak kullanılmasının en önemli temsilcilerinden biri olmuştur.

Uzun süredir sağlık durumu kötü giden ve 71 yaşında hayata veda eden Dennis Ritchie“UNIX, temelde basit bir işletim sistemidir, ama bu basitliği anlamak için bir dahi olmanız gerekir” sözüyle biliniyor.

 

 

Merhaba Sevgili okurlarım; henüz bildiğim bir okurum yok ama yinede ben yazicagim birseyler.

Cebit donusu 2. gunumde cebittin eskisini arattigini artik bilisim dunyasinin degil is dunyasinin kartvizit dagitmak icin toplandigi bir yer oldugunu herkez gibi belirtmekte olucam. Calismakta oldugum sirketim Teknikkart ( http://teknikkart.com.tr/ )  ile satandimizda gecirdigim 4 gun boyunca iyi işler pesinde kostuk evet guzel projeler icin anlasmalarimizda oldu fakat sadece kendi bazimda dusunmuyorum durumu bir cok firma bu sene bekledigi sonucu alamadi ve cevre standlarimizdan aldigim bilgilere gore bir cogu seneye katilmamayi dusunuyor.

Bu sene 1-4-5-8 nolu salonlar da kapali idi. Gelen ogrencilerin bir cogu sponsor aramakta. Almanya Cebit’e gitmek istiyorum artik. Turkiyede bir cok seyi ele alip basarabilecek daha guzel noktalara getirebilecek bir noktada iken yonetimsel problemler yuzunden batirmakta oldugumuzu dusunuyorum. Artik cebit’e gelen kisiler bilisimci degil halk cunku bilisim adina kalan bir sey yok.

Peki neden boyle oldu; Yurtdisindan direk gelen sicak teknoloji urunleri daha ilk zamanki halkin ve promosyon toplayicilarin elinden gecince artik gelme hevesini kaybetti. yani bu benim sahsi gorusum ama buyuk bir nebzede cevremdeki insanlarda buna katiliyor.

Fuarin yinede eglenceli gecmedigini soylemiyecegim cunku ozellik ile son gunun tbt’den arkadaslar ile gelenekselleşmiş cebit buluşmamizi gerceklestirdik. Burgerking de yemek ve hoş sohbet ile bir cebit macerami daha bitirdim.

işim geregi kullanmakta oldugum print-printer islemlerini bir yerde toplu buldum ve blogumda yayinlamak istedim.

C# Printing Functions

Printing text and graphics is one of the more important tasks in Windows application programming. With .NET, simple printing, such as sending a string to the printer, is easy; however, the .NET Framework lacks a ready-to-use class that encapsulates complex printing tasks. For example, some coding is required if you want to allow the user to set the printer and the page to print, change the margins, print more than one copy, etc. This article offers a brief tutorial on printing using the .NET Framework class library. It starts with printing a simple string and then proceeds with some coding for page setup and print preview. To provide printing features in your Windows application, you should be familiar with the Graphics class in theSystem.Drawing namespace. You can find a discussion of this class in my previous article, “ System.Drawing with C#.”

For printing, you use the System.Drawing.Printing namespace. The main class in this namespace is the PrintDocument class, which represents an object that sends output to the printer. The role of this class is so central that you can achieve simple and complex printing tasks by using this class alone. However, as we shall see, other classes in this and other namespaces help make coding easier.

To print text or graphics, you call the Print method of the
System.Drawing.Printing.PrintDocument class. One of the events the Print method invokes is the PrintPage event. You need to wire an event handler to the PrintPageevent and write the code to send output to the printer. The event handler will receive an argument of type System.Drawing.Printing.PrintPageEventArgs, containing data related to the PrintPage event. One of the properties inPrintPageEventArgs is Graphics, from which you can obtain aSystem.Drawing.Graphics object. This Graphics object represents a print page. To send a string to the printer, for example, you use the Graphics class’ DrawStringmethod. Of course, you can also call other methods of the Graphics class, such asFillRectangleDrawEllipse, etc.

To illustrate how printing is done using members of the System.Drawing.Printingnamespace, I’ve created a simple form, shown in Example 1. This is basically a blank form without any printing capability. I will gradually add code to this class to add printing features. The code in Listing 1 is a form class with a menu containing a single menu item, fileMenuItem. This item in turn contains three submenu items:filePageSetupMenuItem, filePrintPreviewMenuItem, and filePrintMenuItem.

Listing 1: The form template for printing

 using System; using System.Drawing; using System.Drawing.Printing; using System.IO; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace CSharpPrinting { public class Form1 : System.Windows.Forms.Form { public Form1() { MenuItem fileMenuItem = new MenuItem("&File"); MenuItem filePageSetupMenuItem = new MenuItem("Page Set&up...", new EventHandler(filePageSetupMenuItem_Click)); MenuItem filePrintPreviewMenuItem = new MenuItem("Print Pre&view", new EventHandler(filePrintPreviewMenuItem_Click)); MenuItem filePrintMenuItem = new MenuItem("&Print...", new EventHandler(filePrintMenuItem_Click), Shortcut.CtrlP); fileMenuItem.MenuItems.Add(filePageSetupMenuItem); fileMenuItem.MenuItems.Add(filePrintPreviewMenuItem); fileMenuItem.MenuItems.Add(filePrintMenuItem); this.Menu = new MainMenu(); this.Menu.MenuItems.Add(fileMenuItem); } // -------------- event handlers ------------------------------------- private void filePrintMenuItem_Click(Object sender , EventArgs e) { } private void filePrintPreviewMenuItem_Click(Object sender , EventArgs e) { } private void filePageSetupMenuItem_Click(Object sender , EventArgs e) { } //-------------- end of event handlers ------------------------------ [STAThread] static void Main() { Application.Run(new Form1()); } } } 

Note that each of the three menu items in fileMenuItem is wired with an event handler in its declaration. The event handlers for the three menu items arefilePageSetupMenuItem_Click, filePrintPreviewMenuItem_Click, andfilePrintMenuItem_Click, as shown in the following code, which is part of the class’ constructor.

 MenuItem filePageSetupMenuItem = new MenuItem("Page Set&up...", new EventHandler(filePageSetupMenuItem_Click)); MenuItem filePrintPreviewMenuItem = new MenuItem("Print Pre&view", new EventHandler(filePrintPreviewMenuItem_Click)); MenuItem filePrintMenuItem = new MenuItem("&Print...", new EventHandler(filePrintMenuItem_Click), Shortcut.CtrlP); 

As you can see from the code in Listing 1, the three event handlers are currently blank.

 private void filePrintMenuItem_Click(Object sender , EventArgs e) { } private void filePrintPreviewMenuItem_Click(Object sender , EventArgs e) { } private void filePageSetupMenuItem_Click(Object sender , EventArgs e) { } 

Now, we’re ready to add code to this template to enable printing. Here is what we will do.

  1. Add a class-level variable called printDoc of typeSystem.Drawing.Printing.PrintDocument:
    private PrintDocument printDoc = new PrintDocument(); 
  2. In the class’ constructor, wire the PrintPage event of printDoc with an event handler we simply call printDoc_PrintPage:
    printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPage); 
  3. Add code to the filePrintMenuItem_Click event handler:
     private void filePrintMenuItem_Click(Object sender, EventArgs e) { printDoc.Print(); } 
  4. Add code to printDoc_PrintPage:
     private void printDoc_PrintPage(Object sender , PrintPageEventArgs e) { String textToPrint = ".NET Printing is easy"; Font printFont = new Font("Courier New", 12); e.Graphics.DrawString(textToPrint, printFont, Brushes.Black, 0, 0); }

The resulting form is given in Listing 2.

Listing 2: The form with code that prints.

 using System; using System.Drawing; using System.Drawing.Printing; using System.IO; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace CSharpPrinting { public class Form1 : System.Windows.Forms.Form { private PrintDocument printDoc = new PrintDocument(); public Form1() { MenuItem fileMenuItem = new MenuItem("&File"); MenuItem filePageSetupMenuItem = new MenuItem("Page Set&up...", new EventHandler(filePageSetupMenuItem_Click)); MenuItem filePrintPreviewMenuItem = new MenuItem("Print Pre&view", new EventHandler(filePrintPreviewMenuItem_Click)); MenuItem filePrintMenuItem = new MenuItem("&Print...", new EventHandler(filePrintMenuItem_Click), Shortcut.CtrlP); fileMenuItem.MenuItems.Add(filePageSetupMenuItem); fileMenuItem.MenuItems.Add(filePrintPreviewMenuItem); fileMenuItem.MenuItems.Add(filePrintMenuItem); this.Menu = new MainMenu(); this.Menu.MenuItems.Add(fileMenuItem); printDoc.PrintPage += new PrintPageEventHandler( printDoc_PrintPage); } // -------------- event handlers --------------------------------- private void filePrintMenuItem_Click(Object sender , EventArgs e) { printDoc.Print(); } private void filePrintPreviewMenuItem_Click(Object sender , EventArgs e) { } private void filePageSetupMenuItem_Click(Object sender , EventArgs e) { } private void printDoc_PrintPage(Object sender , PrintPageEventArgs e) { String textToPrint = ".NET Printing is easy"; Font printFont = new Font("Courier New", 12); e.Graphics.DrawString(textToPrint, printFont, Brushes.Black, 0, 0); } //-------------- end of event handlers ------------------------------- [STAThread] static void Main() { Application.Run(new Form1()); } } } 

Now, if you run the form and press Ctrl+P (of course, assuming a printer is connected to your computer and the correct driver is installed), the printer will print the string “.NET printing is easy.” Isn’t it easy?

Using PrintDialog

Usually in a Windows application, you will see the Print dialog box prior to printing. This dialog box gives the user the chance to cancel printing, change the printer properties, select the number of copies, select the pages to print, etc. If you modify the filePrintMenuItem_Click in Listing 2 with the one in Listing 3, a Print dialog box will be displayed prior to printing. A Print dialog box is represented by theSystem.Windows.Forms.PrintDialog class.

Listing 3: Using PrintDialog

 private void filePrintMenuItem_Click(Object sender , EventArgs e) { PrintDialog dlg = new PrintDialog(); dlg.Document = printDoc; if (dlg.ShowDialog() == DialogResult.OK) { printDoc.Print(); } } 

The filePrintMenuItem_Click event handler in Listing 3 only sends output to the printer if the user clicks the Print dialog box’s OK button. However, the settings a user changes in the Print dialog box won’t take effect until you write the code to take those options into account.

Page Setup

The following section adds the feature to set up the page that is used for printing. For this, you must perform the following steps.

  1. Construct an instance of the System.Drawing.Printing.PageSettings class (for this example, I add the following to the Declarations part of the form class):
    private PageSettings pgSettings = new PageSettings(); 
  2. Set pgSettings to the DefaultPageSettings property of printDoc before printing. Therefore, add the highlighted code to the filePrintMenuItem_Click event handler in your form:
     private void filePrintMenuItem_Click(Object sender , EventArgs e) { printDoc.DefaultPageSettings = pgSettings; PrintDialog dlg = new PrintDialog(); dlg.Document = printDoc; if (dlg.ShowDialog() == DialogResult.OK) { printDoc.Print(); } } 
  3. Allow the user to change the setting of the page. For our example, add the following code to the filePageSetupMenuItem_Click event handler:
     private void filePageSetupMenuItem_Click(Object sender , EventArgs e) { PageSetupDialog pageSetupDialog = new PageSetupDialog(); pageSetupDialog.PageSettings = pgSettings; pageSetupDialog.AllowOrientation = true; pageSetupDialog.AllowMargins = true; pageSetupDialog.ShowDialog(); } 
  4. Modify the printDoc_PrintPage event handler to take into account the top and left margins. Here is the code for our form:
     private void printDoc_PrintPage(Object sender , PrintPageEventArgs e) { String textToPrint = ".NET Printing is easy"; Font printFont = new Font("Courier New", 12); int leftMargin = e.MarginBounds.Left; int topMargin = e.MarginBounds.Top; e.Graphics.DrawString(textToPrint, printFont, Brushes.Black, leftMargin, topMargin); } 

Now you can select Page Setup from the File menu. What it looks like depends on your printer type. The complete code for the form that includes page setup is given in Listing 4.

Listing 4: The form class that allows the user to change the page setup

 using System; using System.Drawing; using System.Drawing.Printing; using System.IO; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace CSharpPrinting { public class Form1 : System.Windows.Forms.Form { private PrintDocument printDoc = new PrintDocument(); private PageSettings pgSettings = new PageSettings(); public Form1() { MenuItem fileMenuItem = new MenuItem("&File"); MenuItem filePageSetupMenuItem = new MenuItem( "Page Set&up...", new EventHandler( filePageSetupMenuItem_Click)); MenuItem filePrintPreviewMenuItem = new MenuItem( "Print Pre&view", new EventHandler( filePrintPreviewMenuItem_Click)); MenuItem filePrintMenuItem = new MenuItem("&Print...", new EventHandler(filePrintMenuItem_Click), Shortcut.CtrlP); fileMenuItem.MenuItems.Add(filePageSetupMenuItem); fileMenuItem.MenuItems.Add(filePrintPreviewMenuItem); fileMenuItem.MenuItems.Add(filePrintMenuItem); this.Menu = new MainMenu(); this.Menu.MenuItems.Add(fileMenuItem); printDoc.PrintPage += new PrintPageEventHandler( printDoc_PrintPage); } // -------------- event handlers ---------------------- private void filePrintMenuItem_Click(Object sender , EventArgs e) { printDoc.DefaultPageSettings = pgSettings; PrintDialog dlg = new PrintDialog(); dlg.Document = printDoc; if (dlg.ShowDialog() == DialogResult.OK) { printDoc.Print(); } } private void filePrintPreviewMenuItem_Click(Object sender , EventArgs e) { } private void filePageSetupMenuItem_Click(Object sender , EventArgs e) { PageSetupDialog pageSetupDialog = new PageSetupDialog(); pageSetupDialog.PageSettings = pgSettings; pageSetupDialog.AllowOrientation = true; pageSetupDialog.AllowMargins = true; pageSetupDialog.ShowDialog(); } private void printDoc_PrintPage(Object sender , PrintPageEventArgs e) { String textToPrint = ".NET Printing is easy"; Font printFont = new Font("Courier New", 12); int leftMargin = e.MarginBounds.Left; int topMargin = e.MarginBounds.Top; e.Graphics.DrawString(textToPrint, printFont, Brushes.Black, leftMargin, topMargin); } //-------------- end of event handlers ------------------ [STAThread] static void Main() { Application.Run(new Form1()); } } } 

Printer Setting

You can also enable the user to change printer settings by performing the following steps.

  1. Create an instance of the System.Drawing.Printing.PrinterSettings class. For our form, add the following line of code:
    private PrinterSettings prtSettings = new PrinterSettings(); 
  2. Set prtSettings to the PrinterSettings property of the PageSetupDialog:
     private void filePageSetupMenuItem_Click(Object sender , EventArgs e) { PageSetupDialog pageSetupDialog = new PageSetupDialog(); pageSetupDialog.PageSettings = pgSettings; pageSetupDialog.PrinterSettings = prtSettings; pageSetupDialog.AllowOrientation = true; pageSetupDialog.AllowMargins = true; pageSetupDialog.ShowDialog(); } 

Now the Printer button in the Page Setup dialog is enabled. If you click the Printer button, the Printer setting page will be displayed.

Print Preview

In a Windows application, before the user prints, they can normally view a preview of how the printout will like on paper. You can also provide this feature by adding the following code to the filePrintPreviewMenuItem_Click event handler.

 private void filePrintPreviewMenuItem_Click(Object sender , EventArgs e) { PrintPreviewDialog dlg = new PrintPreviewDialog(); dlg.Document = printDoc; dlg.ShowDialog(); } 

The Print Preview dialog box is represented by theSystem.Windows.Forms.PrintPreviewDialog class. You can create an instance of this dialog box by using its no-argument constructor. Then you must assign thePrintDocument object to print to the Document property of the PrintPreviewDialogobject. When the ShowDialog method is called, it will invoke the PrintPage event of the PrintDocument object. However, the output will not be sent to the printer but to the PrintPreviewDialog object. The complete code is given in Listing 5.

Listing 5: The complete code with Page Setup and Print Preview

 using System; using System.Drawing; using System.Drawing.Printing; using System.IO; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace CSharpPrinting { public class Form1 : System.Windows.Forms.Form { private PrintDocument printDoc = new PrintDocument(); private PageSettings pgSettings = new PageSettings(); private PrinterSettings prtSettings = new PrinterSettings(); public Form1() { MenuItem fileMenuItem = new MenuItem("&File"); MenuItem filePageSetupMenuItem = new MenuItem("Page Set&up...", new EventHandler(filePageSetupMenuItem_Click)); MenuItem filePrintPreviewMenuItem = new MenuItem("Print Pre&view", new EventHandler(filePrintPreviewMenuItem_Click)); MenuItem filePrintMenuItem = new MenuItem("&Print...", new EventHandler(filePrintMenuItem_Click), Shortcut.CtrlP); fileMenuItem.MenuItems.Add(filePageSetupMenuItem); fileMenuItem.MenuItems.Add(filePrintPreviewMenuItem); fileMenuItem.MenuItems.Add(filePrintMenuItem); this.Menu = new MainMenu(); this.Menu.MenuItems.Add(fileMenuItem); printDoc.PrintPage += new PrintPageEventHandler( printDoc_PrintPage); } // -------------- event handlers ------------------------------------ private void filePrintMenuItem_Click(Object sender , EventArgs e) { printDoc.DefaultPageSettings = pgSettings; PrintDialog dlg = new PrintDialog(); dlg.Document = printDoc; if (dlg.ShowDialog() == DialogResult.OK) { printDoc.Print(); } } private void filePrintPreviewMenuItem_Click(Object sender , EventArgs e) { PrintPreviewDialog dlg = new PrintPreviewDialog(); dlg.Document = printDoc; dlg.ShowDialog(); } private void filePageSetupMenuItem_Click(Object sender , EventArgs e) { PageSetupDialog pageSetupDialog = new PageSetupDialog(); pageSetupDialog.PageSettings = pgSettings; pageSetupDialog.PrinterSettings = prtSettings; pageSetupDialog.AllowOrientation = true; pageSetupDialog.AllowMargins = true; pageSetupDialog.ShowDialog(); } private void printDoc_PrintPage(Object sender , PrintPageEventArgs e) { String textToPrint = ".NET Printing is easy"; Font printFont = new Font("Courier New", 12); int leftMargin = e.MarginBounds.Left; int topMargin = e.MarginBounds.Top; e.Graphics.DrawString(textToPrint, printFont, Brushes.Black, leftMargin, topMargin); } //-------------- end of event handlers ----------------------------- [STAThread] static void Main() { Application.Run(new Form1()); } } } 

Conclusion

As you can see, this article has shown how to provide the printing feature in your Windows application, step-by-step. However, the code for printing is scattered around the other code. It is a good idea to encapsulate the printing feature in a class of its own so that you can have the printing feature without making your code “dirty.”

Budi Kurniawan is a senior J2EE architect and author.

 

 

orjinal sayfa asagidaki linktedir :
http://ondotnet.com/pub/a/dotnet/2002/06/24/printing.html

Aşağıdaki makale benim ilk yazım sayilir. satır satır inceleme ile birlikte 2003 de ” http://Ceturk.com ” icin yazmistim. kendi blogumda ilk bunu yayinliyim dedim.

 

Main Code:
————————————————————-
<table align=center id=Main1Tablo width=”90%” cellpadding=0 cellspacing=0>
<tr>
<td bgcolor=”#949494″ width=”80%”> Merhaba Ziyaretci<td>
<td id=”Menu1Tablo” bgcolor=”#949494″ width=”10%” align=”center” onmouseover=”Ac(‘Menu1′,’Main1′)” onmouseout=”Kapa(‘Menu1′)”>Portal Menu<td>
<td id=”Menu2Tablo” bgcolor=”#949494″ width=”10%” align=”center” onmouseover=”Ac(‘Menu2′,’Main1′)” onmouseout=”Kapa(‘Menu2′)”>Kisisel Menu<td>
</tr>
</table>
<script language=”javascript”>

function Ac(SayStr,SayMStr) {
Konuslandir(SayStr,SayMStr)
Goster(SayStr)
}

function Konuslandir(SayStr,SayMStr) {

var HizzaM = document.getElementById(SayMStr+’Tablo’);
var Hizza = document.getElementById(SayStr+’Tablo’);
var Konus = document.getElementById(SayStr+’Div’);
Konus.style.top = Hizza.offsetTop + Hizza.offsetHeight + HizzaM.offsetTop + ‘px’;
Konus.style.left = Hizza.offsetLeft + HizzaM.offsetLeft + ‘px’;
}

function Kapa(SayStr) {
document.getElementById(SayStr+’Div’).style.visibility = “hidden”;
}

function Goster(SayStr) {
document.getElementById(SayStr+’Div’).style.visibility = “visible”;
}

</script>

<div id=”Menu1Div” style=”visibility=hidden; POSITION: absolute; left:-100px; top:-100px;” onmouseover=”Goster(‘Menu1′)” onmouseout=”Kapa(‘Menu1′)”>
<Table bgcolor=”#AA6666″>
<tr>
<td><a href=uyeler.asp>Uyeler</td>
</tr>
<tr>
<td><a href=Forum.asp>Forum</td>
</tr>
<tr>
<td><a href=Download.asp>Download</td>
</tr>
</Table>

<div id=”Menu2Div” style=”visibility=hidden; POSITION: absolute; left:-100px; top:-100px;” onmouseover=”Goster(‘Menu2′)” onmouseout=”Kapa(‘Menu2′)”>
<Table bgcolor=”#AA6666″>
<tr>
<td><a href=Profil.asp>Profil</td>
</tr>
<tr>
<td><a href=MsgKutusu.asp>MesajBox</td>
</tr>
<tr>
<td><a href=Bye.asp>Cikis</td>
</tr>
</Table>

————————————————————-

Merhaba Js ile hazirlanmis bir menuyu inceleyerek birazda Javascripte baslama ve isinma alistirmasi yapmak istedim. Simdi yukardaki kodu satir satir ne ise yaradiğini anlayarak inceleyelim.

Satir1 : <table align=center id=Main1Tablo width=”90%” cellpadding=0 cellspacing=0>

– Bu satirda html deki bilindik tablo yu olusturduk burada bizim acizdan onemli olan kisim
– position:absolute” demistik, top ve left değerlerini sayfaya göre alacaktýr. Yani bağýmsýz değiþken (position:absolute) bir nesne’nin left’i, sayfanýn en soluna olan uzaklýğý demektir. Bu durumda ana tablonun sayfa soluna uzaklýğý, tablonun içindeki ilk td’nin (merhaba yazan yer) geniþliği (width) ve ana tablonun cellspacing/cellpadding değerlerine ediyor demektir. Bunlarý fonksiyon içinden alert ile yazdýrýp görebiliriz. Sorunu cozmek icin ana tablomuzunda saydakileft bilgilisini eklememiz gerekecektir o yuzden bu ana tabloyada bir id tanimliuyoruz

Satir2 : <tr>
Satir3 : <td bgcolor=”#949494″ width=”80%”> Merhaba Ziyaretci<td>
Satir4 : <td id=”Menu1Tablo” bgcolor=”#949494″ width=”10%” align=”center” onmouseover=”Ac(‘Menu1′,’Main1′)” onmouseout=”Kapa(‘Menu1′)”>Portal Menu<td>

– himm bu bizim hizzamiz olacak olan tablo ilk menu ismimizi buna veriyoruz. ben kullanim kolayliği olsun diesinden menu1 ile sabitliyicem burayi.baslari değisken yapip sonlari sabit yapiyorum ki acilacak olan div ile tablo id lerimiz karismasin. burada iki tane ozelliğinide kullaniyoruz systemin onmouseover=”Ac(‘Menu1′,’Main1′)” onmouseout=”Kapa(‘Menu1′)” onMauseOver ustune gelindiğinde yapilacak islem oluyor onMauseOut ta uzerinden mause ciktiğinda yapilacak olan islem. Js ile tanimladiğmiz fonksiyonlari buradan tetikliyoruz.

Satir5 : <td id=”Menu2Tablo” bgcolor=”#949494″ width=”10%” align=”center” onmouseover=”Ac(‘Menu2′,’Main1′)” onmouseout=”Kapa(‘Menu2′)”>Kisisel Menu<td>

– az onceki satir ile hemen hemen ayni dediğim gibi sadece idnin basini değistiriyoruz sonu ayni kaliyoruki fonksiyonu cok bilgi gondermek zorunda kalmayalim.

Satir6 : </tr>
Satir7 : </table>
Satir8 : <script language=”javascript”>

– Js kodlarini sayfamizin icinde kullanmaya basliyoruz.

Satir9 : function Ac(SayStr,SayMStr) {

– bir fonksiyon tanimladik. Ac isminde bir fonksiyon ve disaridan 2 tane deyer aliyor. SayStr ve SayMStr

Satir10 : Konuslandir(SayStr,SayMStr)

– Daha sonra tanimlayacağimiz konuslandir fonksiyona 2 deyeri yukleyip cağiriyoruz.

Satir11 : Goster(SayStr)

– Goster fonksiyonuna SayStr yi yukleyip cağiriyoruz

Satir12 : }

– Js de kod blocklari php c gibi dillerde oldugu seklinde { ile baslar } ile biter. function blogumuzu kapatiyoruz

Satir13 : function Konuslandir(SayStr,SayMStr) {

– Konuslandir fonksiyonunu actik

Satir13 : var HizzaM = document.getElementById(SayMStr+’Tablo’);

– Ana tablonun idsi ile bir nesneye bagladik HizzaM ismi ile. soyledğim giibi sonunda tabloyu sabit kullanmak burada isimize yarayacak butun bilgiyi alip teker teker baglanmak yerine tek deyerin sonuna ekleyip ekleyip baglanacaz.

Satir14 : 
var Hizza = document.getElementById(SayStr+’Tablo’);

– Altina hizzalanacak olan tabloyu bir nesneye bagladik simdide

Satir15 : 
var Konus = document.getElementById(SayStr+’Div’);

– alt kisimda cikacak olan div i tanimladik. Div olanin sonunda Div Tablosuna Tablo atadik.

Satir16 : Konus.style.top = Hizza.offsetTop + Hizza.offsetHeight + HizzaM.offsetTop + ‘px’;

– Konus nesneisin yukardan ne kadar asağida cikacağini, altina hizzalanacak olan tablonun yuksekliği + main tablodan hizzalanacak tablonun yuksekliği + main tablonun yuksekliği olarak atadik. offsetHeight ozelliği bize nesnenin yuksekliğini offsetTop ozelliği ise bize tepeden olan farkini veriyor.

Satir17 : Konus.style.left = Hizza.offsetLeft + HizzaM.offsetLeft + ‘px’;

– konus nesnesi hizza nesnesinin sagdan main tabloya olan uzakliği + main tablonun ana ekrandan olan uzakliğina esitleniyor.

– Burada Dikkatinizi cekmek istediğim bir sey var ozelliklerden cektiğimizde sayi deyeri geliyor ama belirtme yapmak icin kac px oldugunu belirtmemiz gerekmekte. bu yuzden sonuna + ‘px’ seklinde ekleme yapmaktayiz

Satir18 : }

– konuslandirmakta kullanacağimiz fonksiyonu kapadik.

Satir19 : 
function Kapa(SayStr) {

– uzeri mause nin uzerinden ciktiğinda yapacaği islemi belirtiken kapa demistik bu fonksiyonu tanimliyoruz burada.

Satir20 : 
document.getElementById(SayStr+’Div’).style.visibility = “hidden”;

– Menu iceriğinin yukleneceği div tagindaki visibility yi hidden a esitliyoruz. yine burda getElementByID ile nesneyi belirliyip islem yapiyoruz.

Satir21 : }

– kapa fonksiyonunun kod blogunu kapaiyoruz

Satir22 : function Goster(SayStr) {

– Kapasini yaptik Div gorulmez oldu simdi bunu birde gostermek lazim :p

Satir23 : document.getElementById(SayStr+’Div’).style.visibility = “visible”;

– Kapatma yontemindeki gibi fakat bu sefer visibility ozelliğini visble yapiyoruz.

Satir24 : }

– block kapanir :)

Satir25 : </script>

– script tagi kapanir

Satir26 : <div id=”Menu1Div” style=”visibility=hidden; POSITION: absolute; left:-100px; top:-100px;” onmouseover=”Goster(‘Menu1′)” onmouseout=”Kapa(‘Menu1′)”>

– tablosu belirtilmis olan id nin div’i olusturulunur. burada dikkat edilecek bir yer hemen belirtiyim. visibility=hidden ve POSITION: absolute visibility zaten gozukmemesi icin hidden edildiğini onceki satirlarda soylemistik fakat POSITION: absolute kismina deyinmedik. bu kisim sayfa daki ust obje yada baska bir değis ile bagimsiz nesne olarak tanimlanmasini sagliyor Bunu baska ornekler ile daha iii anlaya bilirsiniz. burada belirtmek istediğim baska bir noktada onmouseover ve out’un da gostermeyi saylayan kodlari yeniden kullandik.

Satir27 : <Table bgcolor=”#AA6666″>
Satir28 : <tr>
Satir29 : <td><a href=uyeler.asp>Uyeler</td>
Satir30 : </tr>
Satir31 : <tr>
Satir32 : <td><a href=Forum.asp>Forum</td>
Satir33 : </tr>
Satir34 : <tr>
Satir35 : <td><a href=Download.asp>Download</td>
Satir36 : </tr>
Satir37 : </Table>
Satir38 :
Satir39 : <div id=”Menu2Div” style=”visibility=hidden; POSITION: absolute; left:-100px; top:-100px;” onmouseover=”Goster(‘Menu2′)” onmouseout=”Kapa(‘Menu2′)”>

– Bu satira kadar olan yerler bildiğiniz html oyuzden yazmadim bu satirda ayni sekilde 26. satirdan farki id si farkli.
– Aklima gelmisken Left ve top i fix olarak -100px ile sayfa disine konuslandirdim ilk acilista bunun sebebi Netscape ve operanin bazi surumlerinde standar olarak hidden i kabul etmiyor. ilk once olmaz filan dedim ama makineme elime gecen browseri yukleyip kodlarimi hepsinde test etmeye baslayinca sonucu gordumki ilk acilista sol ust kosede duruyorlar menuye gelince yok oluyorlar. bu yuzden acilista ekran disinda yarattim.

Satir40 : <Table bgcolor=”#AA6666″>
Satir41 : <tr>
Satir42 : <td><a href=Profil.asp>Profil</td>
Satir43 : </tr>
Satir44 : <tr>
Satir45 : <td><a href=MsgKutusu.asp>MesajBox</td>
Satir46 : </tr>
Satir47 : <tr>
Satir48 : <td><a href=Bye.asp>Cikis</td>
Satir49 : </tr>

Uygulamayı indirin